Transferring data from php to ajax

How can I pass data from php lines after ajax?

Php

$query = 'SELECT * FROM picture order by rand() LIMIT 10'; $result = mysql_query($query); while ($rec = mysql_fetch_array($result, MYSQL_ASSOC)) { $url[]=$rec['pic_location']; $name[]=$rec['name']; $age[]=$rec['age']; $gender[]=$rec['gender']; } echo json_encode($url); echo json_encode($name); echo json_encode($age); echo json_encode($gender); 

Ajax

 $(".goButton").click(function() { var dir = $(this).attr("id"); var imId = $(".theImage").attr("id"); $.ajax({ url: "viewnew.php", dataType: "json", data: { current_image: imId, direction : dir }, success: function(ret){ console.log(ret); var arr = ret; alert("first image url: " + arr[0][0] + ", second image url: " + arr[0][1]); // This code isnt working alert("first image Name: " + arr[1][0] + ", second image name: " + arr[1][1]); $(".theImage").attr("src", arr[0]); if ('prev' == dir) { imId ++; } else { imId --; } $("#theImage").attr("id", imId); } }); }); }); </script> 

My question is: how can I display the values ​​here? Alert message gives me "Undefined"?

+6
source share
3 answers

You can do something in this direction.

Php

 $query = 'SELECT * FROM picture order by rand() LIMIT 10'; $res = mysql_query($query); $pictures = array(); while ($row = mysql_fetch_array($res)) { $picture = array( "pic_location" => $row['pic_location'], "name" => $row['name'], "age" => $row['age'], "gender" => $row['gender'] ); $pictures[] = $picture; } echo json_encode($pictures); 

Js

 ... $.ajax({ ... dataType: "json", ... success: function(pictures){ $.each(pictures, function(idx, picture){ // picture.pic_location // picture.name // picture.age // picture.gender }); } }); ... 
+10
source

You cannot put multiple echo statements for an AJAX response:

 echo json_encode($url); echo json_encode($name); echo json_encode($age); echo json_encode($gender); 

Attach your arrays and send one answer:

 $arr = $url + $name + $age + $gender; echo json_encode($arr); 
+2
source

You can easily do this using a single array:

 $pics = array(); while ($rec = mysql_fetch_array($result, MYSQL_ASSOC)) { $pics[$rec['id']]['url'] = $rec['pic_location']; $pics[$rec['id']]['name']=$rec['name']; $pics[$rec['id']]['age']=$rec['age']; $pics[$rec['id']]['gender']=$rec['gender']; } echo json_encode($pics); 
+2
source

Source: https://habr.com/ru/post/917681/


All Articles