我有这个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);
});
});
这不输出任何内容。
感谢您的帮助。
答案 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'])
}