Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP Array - przesłana przez kliknięcie w DIV do jQuery Ajax
Forum PHP.pl > Forum > Przedszkole
scorpion10
Posiadam DIV z id="jsn"

  1. <div id="jsn" style="border:solid 1px red;height:30px;width:99%;overflow:hidden;margin-left:2px;"><?php echo json_encode($dane); ?></div>


po kliknięciu w którego chcę przesłać do JQuery zawartość tablicy json_encode($dane) jako json i tam najlepiej jeśli to możliwe odebrać go funkcja serializeArray()

wszystko było by pewno ok ale niestety dane do jQuery nie docierają. Brak jest błędów w console.log, status HTTP 200 ale dane sie nie pojawiają.
kod jquery

  1.  
  2. $(document).ready(function(){
  3. $("#jsn").click (function() {
  4.  
  5. var params = $("#jsn").serializeArray();
  6. //console.log(params);
  7.  
  8. $.post('modules/OprogramowanieEdit.php',params, function(res){
  9. console.log(res);
  10. },'json');
  11.  
  12.  
  13. });
  14. });
  15.  



Jak to, poprawnie zrobić jak przesłać tą tablice $dane z PHP nie przez formularz i przekazać do serializeArray() w jQuery lub jeśli nie da sie przez
serializeArray, to jak inaczej, najlepiej obrobić te dane z tablicy w JQ a potem przesłac poprzez Ajax ponowni do PHP.
trueblue
Dane z jsn możesz pobrać poprzez: http://api.jquery.com/text/
nospor
Problem nie ma zadnego zwiazku z php. Przenosze

Swoja droga po co w ogole zapisujesz to do diva anie bezposrednio do zmiennej?

Kod
var jsn = <?php echo json_encode($dane); ?>;


A potem w ajax
Kod
    $.post('modules/OprogramowanieEdit.php',jsn, function(res){
            console.log(res);
    },'json');
scorpion10
div który tu jest, służy jako button, po jego kliknięciu ma uruchomić się obsługa w JQ.
Zapewne można to inaczej jeszcze zrobić, ale wybrałem taki sposób i nadal rozbijam się na
przesłaniu tej tablicy jsonem do JQ.
nospor
No dobra, trueblue ci podal jak pobrac zawartosc diva. zmieniles, sprawdziles?
scorpion10
Zmieniłem, i sprawdzam ale coś ze składnią mi nie wychodzi. Próbuje pobrać funkcją text() ten fragment php
z tablicą ale chyba daleki jestem od prawdy :-)


  1.  
  2. $("#jsn").on("click",function() {
  3.  
  4. var jsn = ("div#jsn").text("<?php echo json_encode($dane); ?>");
  5.  
  6. $.post('modules/OprogramowanieEdit.php',jsn, function(res){
  7.  
  8. console.log(res);
  9.  
  10. },'json');
  11.  
  12. });
  13.  
  14.  


w przeglądarce dostaje .text is not a function
nospor
Ty chyba losowo cos zmieniasz bez zadnego namyslu.
Jedyne co na chwile obecna miales zmienic to na to:

var params = $("#jsn").text();
console.log(params);
scorpion10
teraz w konsoli dostaje samo: [] czyli juz chyba ok bo to wyglada na pusta tablice...
Dzieki nospor, próbuje dalej dopracować sa. w JQ i JS nie jestem na bieżąco nieststey :-(
nospor
A to?
var params = $("#jsn").html();
console.log(params);

I pokaz kod po zmianach ktore zrobiles bo juz nie wierze ze wstawiasz to co trzeba wink.gif
scorpion10
OK, tak w przypadku html() jak i text() są już dane w konsoli w formie json. Czy teraz przekazując tą zmienną params
do Ajax powinienem bez problemów przesłać całą tablice ponownie do php ? A właściwie jak można teraz mając
te dane z tablicy w params, przypisać do wybranej zmiennej jakąkolwiek wartość index z tej tablicy ?
Niestety nie robiłem nigdy nic z tablicami w JQ i Ajax więc to dal mnie nowy teren.


  1. $("#jsn").click (function() {
  2.  
  3. var params = $("#jsn").html();
  4.  
  5. console.log(params);
  6.  
  7. $.post('modules/OprogramowanieEdit.php',params, function(res){
  8.  
  9. console.log(res);
  10.  
  11. },'json');
  12.  
  13. });
nospor
W divie masz tekst json, a do ajax masz przeslac obiekt json czyli


var params = JSON.parse($("#jsn").html());
scorpion10
Nie wiem dlaczego,ale przy próbie parsowania Json, dostaje błąd w konsoli

Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data


coś ze skladnią syntax
nospor
pokaz co dokladnie zwraca

var params = $("#jsn").html();

console.log(params);

scorpion10
Takie dane zwraca bez parsowania jako json

[{"dns":"W-125-0027","model":"C440","producent":"LENOVO","ncrf":"CF\/PST\/487\/0000085319","nk":"IK\/PST\/XV\/31279","ID_sprzet":"5","kat":"Komputer AiO","pokoj":"18","nazwisko":"xxxx","imie":"xxx","pok_uzyt":"18"}]




EDIT:



Wielkie Dzięki @nospor, wiem już jak to z tym json-em w JQ, Ajax działa, dzięki twojej pomocy. To już kolejny raz, kiedy mogłem na Ciebie liczyć SZACUNEK ! za wiedzę i chęć pomocy innym
nospor
Cool smile.gif
Mozesz pokazac jak wyglada finalny kod?
scorpion10
Dalsze problemy sad.gif .
Dynamicznie generowane div-y dostają swój ID, kolejno numerowany czyli ID='json0' pozniej ID='json1' itd.
w jquery po kliknięciu w danego DIV-a odczytuje poprawnie, po reakcji na click .nazwa_klasy jego id, ale
odczytane ID za nic nie mogę, przekazać poprawnie do funkcji parsowania JSON.parse(), dostaję w konsoli przeglądarki Syntax Error
Czy w argumencie t ej funkcji, niemożna używać zmiennej ? Jeżeli nie to jak inaczej rozwiazać taki problem by parsowane były
tablice z klikniętego div ?

  1. $(".jjj").click(function () {
  2.  
  3. var div = $(this)[0]['id'];
  4.  
  5. var params = JSON.parse($("'#"+div+"'").html());
  6.  
  7. console.log(id);
  8.  
  9. var tab = $.ajax({
  10. type: 'POST',
  11. url: 'modules/OprogramowaniePlus.php',
  12. data: {
  13. tablica:params
  14. }
  15.  
  16. });
  17.  
  18. tab.done(function (dane) {
  19. $('#json').html(dane);
  20. console.log("SUCESS !!!");
  21.  
  22. });
  23.  
  24. tab.fail(function () {
  25. console.log('BŁĄD !!!!');
  26. });
  27.  
  28. tab.always(function () {
  29. console.log('ZAMYKAM POŁACZENIE');
  30. });
  31.  
  32. });
nospor
Jak ty sobie lubisz komplikowac zycie.

Skoro klikasz w div, to przeciez juz masz ten div i nie musisz go szukac po id....


var div = $(this);
var params = JSON.parse(div.html());
scorpion10
Coś ze skladnią nie tak, dostaje w konsoli przeglądarki Syntax Error

Uncaught SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 485 of the JSON data


  1. $(".jjj").click(function () {
  2. var div = $(this);
  3. var params = JSON.parse(div.html());
  4.  
  5. console.log(div);
  6.  
  7. var tab = $.ajax({
  8. type: 'POST',
  9. url: 'modules/OprogramowaniePlus.php',
  10. data: {
  11. tablica:params
  12. }
  13.  
  14. });
  15.  
  16. tab.done(function (dane) {
  17. $('#json').html(dane);
  18. console.log("SUCESS !!!");
  19.  
  20. });
  21.  
  22. tab.fail(function () {
  23. console.log('BŁĄD !!!!');
  24. });
  25.  
  26. tab.always(function () {
  27. console.log('ZAMYKAM POŁACZENIE');
  28. });
  29.  
  30. });
nospor
No to zobacz co zawiera
div.html()
scorpion10
ehh, przykleił się do diva <br> na końcu i zabużył json-a sad.gif

Ale już ok. Nie wiem kiedy przyzwoicie sie zaprzyjaźnię z JQ ale trochę
to chyba potrwa. nie załapalem że (This) w taki sposób moze identyfikować DIV-a
ja próbowałem wydostać z obiektu jaki tworzy identyfikator danego div, co się udało, ale
JSON.parse() takij kombinowanej zmiennej nie przyjmował :-)

--
EDIT

Czy da się aby ten div przesyłał tego jsona do JQ ale wyświetlal w PHP coś innego a nie zwaratość json-a ?

  1. <div id="<?php echo $jsn ?>" class='jjj' style='width:90%;border:solid 1px red;height:20px'><?php echo json_encode($dane[$x]);?></div>
nospor
tak, dodajesz to do diva jako atrybut data- np data-json='tu twoj json'

i potem odczytujesz to nie z .html ale z .data("json")
scorpion10
CZyli tak powinien wyglądac div z data- ?

  1. <div id="<?php echo $jsn ?>" data-json="<?php echo json_encode($dane[$x]); ?>" class='jjj' style='width:90%;border:solid 1px red;height:20px'></div>


a w JQ

  1.  
  2. $(".jjj").click(function () {
  3. var div = $(this);
  4. //var params = JSON.parse(div.html());
  5. var params = JSON.parse(div.data("json"));
  6.  
  7. console.log(div);
  8.  
  9. var tab = $.ajax({
  10. type: 'POST',
  11. url: 'modules/OprogramowaniePlus.php',
  12. data: {
  13. tablica:params
  14. }
  15.  
  16. });
  17.  
  18. tab.done(function (dane) {
  19. $('#json').html(dane);
  20. console.log("SUCESS !!!");
  21.  
  22. });
  23.  
  24. tab.fail(function () {
  25. console.log('BŁĄD !!!!');
  26. });
  27.  
  28. tab.always(function () {
  29. console.log('ZAMYKAM POŁACZENIE');
  30. });
  31.  
  32. });



Ale znów jakiś Syntax sie przyplątał

Uncaught SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

nospor
Dosc wyraznie napislem ze tak ma byc:

data-json='<?php echo json_encode($dane[$x]); ?>'

specjalnie nie uzylem " bo twoj json zawiera " i najzwyklej by rozwalil html
scorpion10
no tak kolejna nauka dobra nauka :-) a ja myślałem że można zamiennie " lub ' a tu niestety w JQ jak widać nie, no teraz jest OK tongue.gif
nospor
Cos ty sie tak przyczepil tego JQ. Tego nie mozna bo JQ, tamtego nie mozna bo JQ....

Toz ci wyraznie mowie, twoje tekst co wkladasz zawiera cudzyslowia wiec jak wstawisz cudzyslowia do

data-json=" tezt z " wlasnie rozwalil ci to"

to masz rozwalone. Widzisz? Cudzyslow z data-json zostal zamkniety wczesniej przez twoj cudzyslow w tekscie.

Wiec przestan wszystko zwalac na JQ bo polowa tego co tu piszesz to twoje braki w podstawowej wiedzy html/js a nie wymysl JQ smile.gif
scorpion10
Właśnie dlatego narzekam, bo zdaje sobie sprawę z moich braków ;-) Ale powoli z praktyką w końcu będe miał mnie problemów.
Teraz jednak borykam sie z prostymi rzeczami jak składnia. Pobierając obecnie do zmiennej ten znacznik data-
w poniższej wersji dostaje dane



  1. $(".jjj").click(function () {
  2.  
  3. var d = $(this);
  4.  
  5. var div = $(d).data("json");
  6.  
  7. console.log(div);
  8.  
  9. });
  10.  




a już jak próbuje to parsować to mam znów bład

Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data


  1. $(".jjj").click(function () {
  2.  
  3. var div = $(this);
  4.  
  5. var params = JSON.parse(div.data("json"));
  6.  
  7.  
  8. var tab = $.ajax({
  9. type: "POST",
  10. url: "modules/OprogramowaniePlus.php",
  11. data: {
  12. tablica:params
  13. }
  14.  
  15. });
  16.  
  17. tab.done(function (dane) {
  18. $("#json").html(dane);
  19. console.log("SUCESS !!!");
  20.  
  21. });
  22.  
  23. tab.fail(function () {
  24. console.log('BŁĄD !!!!');
  25. });
  26.  
  27. tab.always(function () {
  28. console.log('ZAMYKAM POŁACZENIE');
  29. });
  30.  
  31. });

  1.  
  2. <div id='<?php echo $jsn ?>' data-json='<?php echo json_encode($dane[$x]); ?>' class='jjj' style='width:90%;border:solid 1px red;height:20px'></div>
nospor
No i powtorka z rozrywki

CO dokladnie zwraca

console.log(div.data("json"));
?
scorpion10
Zwraca object i tak jest ok

  1.  
  2.  
  3. Object { dns: "W-125-09", model: "C440", producent: "LENOVO", nf: "CI/P/487/0000085327", nik: "I/PS//362", ID_sprzet: "23", kat: "Komputer AiO", pokoj: "26", nazwisko: "xxxx", imie: "xxx", &#8230; }
  4.  
  5.  


Dlaczego wiec JSON.parser() zwraca syntax ...?
nospor
Skoro zwraca ci Object to juz nie musisz nic parsowac
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.