9

then行の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

echoAJAX応答に複数のステートメントを配置することはできません。

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 に答える
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 に答える