Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][jquery] serialize i odczyt danych z checkbox
Forum PHP.pl > Forum > Przedszkole
Gość
Witam.

Walcze z formularzem przesylanym przez jquery ale z chekboxami mam problem i juz nie wiem co zle robie, z polami radio i zwyklymi polami textowymi nie mam problemu.

php w petli
  1. <input <?php if(isset($exp) && $exp[$i-1]==$i) { echo 'checked'; } ?> class="checkbox" type="checkbox" name="searching[]" id="searching-<?php echo $i; ?>" value="<?php echo $i; ?>"/>
  2. <label for="searching-<?php echo $i; ?>"<span><?php echo $arraySearching[$i]; ?></span></label>


jquery
  1. $(".form-edit-profile").submit(function() {
  2. var searching = $("input[name=searching]:checked").serialize();
  3. $.post("/edit", { searching: "" + searching + "" });
  4. });


do tego momentu jest oczywiscie wszystko ok, mam problem z pobraniem zawartosci zaznaczonych checkboxow i zapisaniu ich do tablicy.

Jesli w formularzu w name dam "searching[]" to var_dump wyswietla mi zawsze pojedyncze zaznaczenie (mimo iz zaznacze wiecej pol) a jesli dam samo "searching" to wyswietli ciag searching=1&searching=2 etc. i teraz jak ten ciag zapisac do tablicy?

po przeszukaniu googlaska myslalem ze parse_str() rozwiaze moj problem jednak nic z tego, wiec co robie zle lub o czym zapomnialem?
b4rt3kk
  1. var check = new Array();
  2. $('input[type="checkbox"]').each(function() {
  3. if ($(this).is(':checked'))
  4. check.push($(this).val());
  5. });


No i masz tablicę z wartościami zaznaczonych checkboxów, możesz ją sobie teraz zakodować json-em czy co tam chcesz.
Gość
Rozumiem ze chodzi o json_decode($json) i to mi da tablice w php? no ale jak Twoj podany przyklad przeniesc do zmiennej json? nigdy nie mialem z tym do czynienia i nie mam pojecia jak to wykonac
b4rt3kk
Dodaj pod tą pętlą co napisałem wyżej taki fragment kodu:

  1. var json = JSON.stringify(check);
  2. alert(json);
Gość
no ja juz sobie wczesniej wyswietlilem to alertem sprawdzajac czy dziala ale nadal nie wiem jak to wykorzystac w tablicy php
b4rt3kk
Żeby przekazać zmienną z JS do PHP musisz użyć ajax-a. Innego sposobu nie ma.
Gość
No teraz to sie pobubilem calkiem. Przeciez uzywam ajaxa do wyslania formularza i po wyslaniu tego formularza znowu uzyc ajaxa? w jaki sposob?

Piszesz ogolnikowo zamiast podac jakis przyklad jak to ma wygladac wszystko.

Zastanawiam sie tez dlaczego nie da sie tych danych z checkboxa odebrac normalnie jako $_POST skoro ze zwyklego inputa lub z inputa radio tak te dane wlasnie odbieram, a moze sie da?

Nie ma mozliwosci zeby z serialize rozbic ciag searching=1&searching=2 itd. na tablice w php? Jesli ktos ma jakis pomysl to prosze o odpowiedz.
b4rt3kk
Ale o czym Ty mówisz konkretnie? Jeśli wysyłasz formularz Ajaxem, to zapewne robisz tak:
1. Zbierasz wartości wszystkich pól formularza przy pomocy JS
2. Wysyłasz to do skryptu PHP, np jako JSON
3. Odkodowujesz JSON w skrypcie PHP, robisz tam co trzeba i jeśli trzeba coś zwrócić wysyłasz znów jako JSON lub zwykły tekst
4. Dekodujesz JSON w JS i możesz go dalej użyć

Jeśli się mylę, to napisz jak to wszystko u Ciebie ma działać lub też działa.

Możesz jeśli chcesz, przesłać wszystko (cały formularz) w ten sposób:

  1. var formData = new FormData($('form')[0]);
  2.  
  3. $.ajax({
  4. url: 'skrypt.php',
  5. type: 'POST',
  6. success: function(msg){
  7.  
  8. },
  9. data: formData,
  10. cache: false,
  11. contentType: false,
  12. processData: false
  13. });
Gość
Nie, nic nie dekoduje i nic nie odkodowuje i wysylam formularz tak jak napisalem w opicie tematu czyli:
  1. $(".form-edit-profile").submit(function() {
  2. var searching = $("input[name=searching]:checked").serialize();
  3. $.post("/edit", { searching: "" + searching + "" });
  4. });


to nie jest ajax?

formularz ma wiecej pol i z kazdego tak samo pobieram dane przez val() a odbieram normalnie jako $_POST['costam'] z tym ze przy checkboxach to nie dziala dlatego szukam jakiegos rozwiazania.

Ty mi podales przyklad ktory mi daje tablice w js i nadal nie wiem jak ja wrzucic do php czyli jestem w tym samym punkcie wyjscia co na poczatku gdzie mam ciag w php po serialize i tez nie wiem co z nim dalej zrobic.

To kodowanie JSON to kompletnie nie mam pojecia czemu sluzy...
b4rt3kk
JSON służy temu, żeby PHP mógł odebrać i przetworzyć tablicę utworzoną w JS.

Wysyłaj wartości w ten sposób:

  1. $.post("/edit", { nazwa: zmienna, json: json });


Gdzie json to właśnie json, który tworzysz za pomocą kodu, który podałem Ci kilka postów wyżej. W PHP odczytujesz to w ten sposób:

  1. $json = json_decode($_POST['json'], true);


Pod zmienną json masz teraz tablicę utworzoną wcześniej w JS.
Gość
Dzieki ale to rozwiazanie niestety nie dziala, dostaje nulla lub empty w var_dump w zaleznosci od tego czy mam w name [] czy nie.
  1. var check = new Array();
  2. $("input[name=searching]:checked").each(function() {
  3. check.push($(this).val());
  4. });
  5. var json = JSON.stringify(check);
  6.  
  7. $.post("/edit", { json: json });


  1. $a=json_decode($_POST['json'], true);


co tu jest zle?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.