9

如何将数据从然后行的 php 传递回 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);

阿贾克斯

$(".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>

我的问题是如何在此处显示值?警报消息给我“未定义”?

4

3 回答 3

13

你可以按照这些思路做一些事情。

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
    });
  }
});
...
于 2012-06-09T11:39:53.947 回答
2

您可以使用单个数组轻松完成此操作:

$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);
于 2012-06-09T11:19:47.823 回答
2

您不能echo为 AJAX 响应放置多个语句:

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

加入您的数组并发送一个响应:

$arr = $url + $name + $age + $gender;
echo json_encode($arr);
于 2012-06-09T11:12:10.047 回答