Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][AJAX][JavaScript] tablica asocjacyjna jako dane metody post ajaxa
Forum PHP.pl > Forum > Przedszkole
janvanczura
Witam.
mam taką funkcję:

  1. function zapisz_dane_z_okna_dial(){
  2. var dane_formularza=[];
  3. dane_formularza['id_artykulu']=$("#okno_dialogowe").attr('id_artykulu');
  4. dane_formularza['tytul']=$("#tytul ").val();
  5. dane_formularza['podtytul']=$("#podtytul ").val();
  6. dane_formularza['na_glownej']=$(".na_glownej ").prop('checked');
  7. dane_formularza['dzial']=$(".dzial ").val();
  8. dane_formularza['ikona']=$("#podglad_ikony").find('img').attr('src');
  9. dane_formularza['tresc_artykulu']=$('#tresc_artykulu').find('iframe').contents().find('body').html();
  10. dane_formularza['galeria']=[];
  11. for(i=0;i<$('.podglad_zdjecia_galerii').length;i++){
  12. dane_formularza['galeria'][i]=$('.podglad_zdjecia_galerii').eq(i).attr('src');
  13. }
  14. $.ajax({
  15. url: 'przyjmij_artykul.php',
  16. type: 'POST',
  17. cache: false,
  18. data: JSON.stringify(dane_formularza),
  19. dataType: 'json',
  20. processData: false, // Don't process the files
  21. contentType: false, // Set content type to false as jQuery will tell the server its a query string request
  22. success: function(data, textStatus, jqXHR)
  23. {
  24. alert(data);
  25. if(typeof data.errors === 'undefined')
  26. {
  27. // Success so call function to process the form
  28. }
  29. else
  30. {
  31. // Handle errors here
  32. console.log('ERRORS: ' + data.error);
  33. }
  34. },
  35. error: function(jqXHR, textStatus, errorThrown)
  36. {
  37. // Handle errors here
  38. console.log('ERRORS: ' + textStatus);
  39. // STOP LOADING SPINNER
  40. }
  41. });
  42. }

I teraz tak: Jeden z elementów tablicy asoscjacyjnej jest też tablicą o nie określonej z góry liczbie elementów.
czy jest jakaś funkcja i jaka to ewentualnie jest, która mi pomoże wsadzić tą tablice bezpośrednio do json-a? JSON.stringify daje wynik: [].
Ostatecznie napiszę sobie pętlę, ale może jest jakas fajna metoda na to.
Z góry dziękuję za pomoc.
SmokAnalog
JSON to format danych, do niego się nic nie wsadza smile.gif Jeśli JSON.stringify zwraca Ci [] to znaczy po prostu tyle, że masz pustą tablicę.
janvanczura
Ok. Już się poprawiam. Skro czepiamy się słówek, to nie wsadzam do JSON-a a konwertuję na format JSON smile.gif.
Otórz. Tablica nie jest pusta, bo jeżeli wykonam np:
  1. alert(dane_formularza['id_artykulu'])

i zrobię to z dowolną pozycją tablicy to otrzymuję to, czego się zpodziewam otrzymać. Składanie tablicy działa poprawnie. Tablica na 100% nie jest pusta.
SmokAnalog
OK, to po kolei. Po pierwsze to nie jest tablica, tylko obiekt. W JavaScripcie nie ma czegoś takiego jak tablice asocjacyjne, więc jeśli używasz stałych nazw pól, to lepiej jest użyć zapisu dane_formularza.id_artykulu, żeby właśnie nie spodziewać się tablicy. Zrób sobie takie coś:
[JAVASCRIPT] pobierz, plaintext
  1. console.log(dane_formularza);
  2. console.log(JSON.stringify(dane_formularza));
[JAVASCRIPT] pobierz, plaintext

I zobacz co się pojawiło w konsoli.
janvanczura
tablica się ładnie wyświetliła, ale json pusty.
Ale!!
Wystarczyło zmienić :
  1. var dane_formularza=[];

na
  1. var dane_formularza={};


To co napisałeś o tym, że nie ma tablic asocjacyjnych sporo wyjasniło. Teraz jest ok.
Dzięki
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.