Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][AJAX][JavaScript] tablica asocjacyjna jako dane metody post ajaxa, Zbieram dane z formularza i chce je wysłac ajaxem do skryptu php
janvanczura
post 1.03.2015, 23:33:09
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.02.2015

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
SmokAnalog
post 1.03.2015, 23:42:56
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post
janvanczura
post 2.03.2015, 10:11:35
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.02.2015

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
SmokAnalog
post 2.03.2015, 10:39:54
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
janvanczura
post 2.03.2015, 11:41:08
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.02.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:55