Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ XML, AJAX _ [ajax] tablice do php

Napisany przez: blokern 26.01.2022, 15:56:27

hej mam taki obiekt

  1. [
  2. {
  3. "id": "3",
  4. "name": "in_1",
  5. "value": "25"
  6. },
  7. {
  8. "id": "10",
  9. "name": "in_1",
  10. "value": "25"
  11. },
  12. {
  13. "id": "15",
  14. "name": "in_1",
  15. "value": "25"
  16. }
  17. ]


w jaki sposob prawidlowo wyslac to do PHP uzywajac ajax?

  1. $.ajax({
  2. url: "t.php",
  3. type: "GET",
  4. data: { tablica: zmiany },
  5. success : function(data) {
  6. //var dane = $.parseJSON(data);
  7. console.log("ok");
  8.  
  9. var dane = $.parseJSON(data);
  10. console.log(dane);
  11.  
  12.  
  13. },
  14. error : function() {
  15.  
  16. }
  17. })


wyswietla sie blad

jak bezposrednio w PHP tablice przypisze do zmiennej $q a nastepnie daje

$q = (json_decode($q));

foreach ($q as $row){
echo $row->id;
}


to wyswietla kolejno idki z tablicy wiec zakladam, ze zle wysylam tablice do phpa

na froncie tworze tablice
  1. zmiany = [];

a potem dodaje do niej

  1. zmiany.push({
  2. id: apartament,
  3. name: name,
  4. value: value
  5. });



z gory dziekuje za pomoc


Napisany przez: nospor 26.01.2022, 15:59:26

Nie GET a POST.
A po drugie jak dostajesz blad to nie logiczne jest by ten blad nam podac?

Napisany przez: blokern 26.01.2022, 16:29:48

  1. $.ajax({
  2. url: "t.php",
  3. type: "POST",
  4. dataType:"JSON",
  5. data: { tablica: zmiany },
  6.  
  7. success : function(data) {
  8.  
  9. var dane = $.parseJSON(data);
  10. console.log(dane);
  11.  
  12. },
  13. error : function() {
  14.  
  15. console.log('error1');
  16.  
  17. }
  18. })


zmienilem na post
dodalem jeszcze dataType
i teraz console wyswietlia mi error1

a to moj php

  1. include('inc/db.php');
  2.  
  3. $a = '[
  4. {
  5. "id": "3",
  6. "name": "in_1",
  7. "value": "25"
  8. },
  9. {
  10. "id": "10",
  11. "name": "in_1",
  12. "value": "25"
  13. },
  14. {
  15. "id": "15",
  16. "name": "in_1",
  17. "value": "25"
  18. }
  19. ]';
  20.  
  21. if(http://www.php.net/isset($_POST["tablica"])){
  22. $q = $_POST["tablica"];
  23.  
  24.  
  25. if(http://www.php.net/isset($q)){
  26.  
  27. $q = (json_decode($q));
  28.  
  29. foreach ($q as $row){
  30.  
  31. $sql = "INSERT INTO owners_case (id, apartament_id, name, value)
  32. VALUES ('', '$row->id', '$row->id', '$row->id')";
  33.  
  34. if ($conn2->query($sql) === TRUE) { }
  35.  
  36. }
  37. http://www.php.net/echo json_encode([
  38. 'komunikat' => 'OK OK OK OK OK OK OK '
  39. ]);
  40.  
  41. }
  42. else{
  43. http://www.php.net/echo json_encode([
  44. 'komunikat' => 'blad z php'
  45. ]);
  46. }
  47.  
  48. }
  49.  


jak zamienie

$q = $_POST["tablica"];

na

$q = $a to zaczyna dzialac czyli cos pewnie zle wysylam obiekt do php


Napisany przez: nospor 26.01.2022, 16:33:28

skoro uzywasz konsoli, to zajrzyj do zakladki NETWORK/SIEC i zobacz co DOKLADNIE zwraca ci request.

Napisany przez: blokern 26.01.2022, 16:38:34

nie wiem na co zwrocic uwage. mam liste plikow ktore sie wykonaly a t.php ma status 200
juz przestalo mi sypac bledami na czerwono i wykonuje sie

  1. error : function() {
  2.  
  3. console.log('error1');
  4.  
  5. }

Napisany przez: nospor 26.01.2022, 16:46:59

poprostu zobacz co DOKLADNIE zwraca ci twoj ajax w zakladce NETWORK. Te twoje t.php. nie mowie status, tylko o BODY

Pozatym masz bledy php
nie
'$row->id'

a:
'{$row->id}'

Ewentualnie dodaj jeszcze

print_r($_POST);
na poczatku t.php i potem sprawdz NETWORK

Napisany przez: blokern 26.01.2022, 18:21:38

dodałem jeszcze print_r($q);

  1. http://www.php.net/array ( [0] => http://www.php.net/array ( [id] => 3 [name] => in_1 [value] => 123 ) [1] => http://www.php.net/array ( [id] => 10 [name] => in_1 [value] => 123 ) [2] => http://www.php.net/array ( [id] => 15 [name] => in_1 [value] => 123 ) )
  2. Warning: json_decode() expects parameter 1 to be string, http://www.php.net/array given in D:\laragon\www\crm\t.php on line 32
  3.  
  4. Warning: Invalid argument supplied for foreach() in D:\laragon\www\crm\t.php on line 34
  5. {"komunikat":"OK OK OK OK OK OK OK "}

Napisany przez: nospor 26.01.2022, 18:35:50

No komunikat bledu chyba dosc wyrazny jest...

Wywal to
$q = (json_decode($q));
jest totalnei zbedne

Napisany przez: blokern 26.01.2022, 18:58:53

Jak najbardziej. Bardzo dziekuje za pomoc i teraz wiem ze jest taka zakladka jak network gdzie najpierw moge poszukac bledu smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)