从php脚本中检索jquery中的JSON

时间:2011-03-09 16:42:27

标签: jquery json

我有这个PHP脚本,在运行时输出这个。我似乎无法理解如何在jquery中访问它我从教程中尝试了各种方法,但没有用。

{"name":"photo1.jpg","id":"1"}{"name":"photo2.jpg","id":"2"}
{"name":"photo3.jpg","id":"3"}{"name":"photo4.jpg","id":"4"}

<?php

mysql_select_db('news') or die(mysql_error());
//echo "Connected to Database";<?php 

$result = mysql_query("SELECT * FROM photos") 
or die(mysql_error());  

// keeps getting the next row until there are no more to get
while($row = mysql_fetch_assoc( $result )) {    
    echo json_encode($row);
} 
?>

Jquery的

$(document).ready(function() {                      
$.getJSON('photo_get.php', function(data){

alert("Data" + data.name);

});
});

这不输出任何内容。


感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

这是有效的JSON:

{"name":"photo1.jpg","id":"1"}{"name":"photo2.jpg","id":"2"}

它应该是这样的:

[{"name":"photo1.jpg","id":"1"},{"name":"photo2.jpg","id":"2"}]

你应该做的是将每一行推送到某个数组,然后将整个数组序列化为JSON。

EG。在循环中使用这样的东西:

$array[] = $row;

然后将整个事物序列化到循环之外:

echo json_encode($array);

答案 1 :(得分:1)

我认为应该是

<?php
$rows=array();
mysql_select_db('news') or die(mysql_error());
//echo "Connected to Database";<?php 

$result = mysql_query("SELECT * FROM photos") 
or die(mysql_error());  

// keeps getting the next row until there are no more to get
while($row = mysql_fetch_assoc( $result )) {    
    $rows[]=$row;
} 
echo json_encode($rows);
?>

$(document).ready(function() {                      
$.getJSON('photo_get.php', function(data){
$.each(data, function(key, val) {
alert("Data" + val.name);
});
});
});

作为一个数组

答案 2 :(得分:0)

您可以将响应推送到数组:

ArrayData = [];

ArrayData = data;

然后循环它:

for (var i; i < ArrayData.length; i++) {
   alert(ArrayData[i]['name'])
}