我从一个新的网站开始(这是我的第一个),我遇到了很大的麻烦!我写了这段代码
<?php
include("misc.inc");
$cxn=mysqli_connect($host,$user,$password,$database) or die("couldn't connect to server");
$query="SELECT DISTINCT country FROM stamps";
$result=mysqli_query($cxn,$query) or die ("couldn't execute query");
$numberOfRows=mysqli_num_rows($result);
for ($i=0;$i<$numberOfRows;$i++){
$row=mysqli_fetch_assoc($result);
extract($row);
$a=json_encode($row);
$a=$a.",";
echo $a;
}
?>
输出结果如下:
{"country":"liechtenstein"},{"country":"romania"},{"country":"jugoslavia"},{"country":"polonia"},
这应该是一个正确的JSON输出...
我现在如何在Jquery中获取它?我试着用
$.getJSON
但我不能正确地融合它。我还不希望将数据传递到DIV或类似的HTML中。
作为更新,Andres Descalzo的代码可以工作!
<?php
include("misc.inc");
$cxn=mysqli_connect($host,$user,$password,$database) or die("couldn't connect to server");
$query="SELECT DISTINCT country FROM stamps";
$result=mysqli_query($cxn,$query) or die ("couldn't execute query");
$numberOfRows=mysqli_num_rows($result);
echo "{data: [";
for ($i=0; $i<$numberOfRows; $i++){
$row=mysqli_fetch_assoc($result);
extract($row);
$a = (($i!=0)?",":"") . json_encode($row);
echo $a;
}
echo "]}";
?>
输出正确,如下所示:
{data: [{"country":"liechtenstein"},{"country":"romania"},{"country":"jugoslavia"},{"country":"polonia"}]}
如何使用$getJSON
?
语法是这样的
$.getJSON( url, [ data ], [ callback(data, textStatus) ] )
url就是上面提到的PHP文件,但是[data]
和回调函数?
发布于 2010-04-30 00:56:46
它不是正确的JSON。正确的做法是,将元素括在方括号中(表示一个数组),如下所示:
[{"country":"liechtenstein"},
{"country":"romania"},
{"country":"jugoslavia"},
{"country":"polonia"}]
您可以首先从DB获取数组中的所有元素,然后对此数组进行编码:
$elements = array()
for ($i=0;$i<$numberOfRows;$i++){
$elements[]=mysqli_fetch_assoc($result);
}
echo json_encode($elements);
这应该可以工作(在jQuery中使用$.getJSON()
)。
更新:A .getJSON()
示例:
$.getJSON('/path/to/php_file', function(data) {
// something with data which is of form
// data = [{'country': '...'}, {...}, ...]
//e.g.
alert(data[0].country);
});
发布于 2010-04-30 01:04:50
请注意,JSON字符串不是有效的JSON字符串!我建议您在生成输出之前使用一次json_encode。你可能会这么做:
$countries = array();
for ($i=0;$i<$numberOfRows;$i++){
$row=mysqli_fetch_assoc($result);
//Not needed, I guess
//extract($row);
$countries[] = $row;
//More probably, you want to get only the country name
//$countries[] = $row['country'];
}
$result = json_encode( $countries );
echo $result;
希望它是正确的,我还没有测试它:)
发布于 2010-04-30 00:56:15
我想你想回声一次-在循环之后。此外,如果您希望将其作为数组传递,请用括号将其括起来。如下所示:
for ($i=0;$i<$numberOfRows;$i++){
$row=mysqli_fetch_assoc($result);
extract($row);
$a=json_encode($row);
$a=$a.",";
}
echo '['.$a.']';
您发送的结果将是:
[{"country":"liechtenstein"},{"country":"romania"},{"country":"jugoslavia"},{"country":"polonia"},]
至于$.getJSON,你是如何应用它的?getJSON的语法为:
$.getJSON( url, [ data ], [ callback(data, textStatus) ] )
你需要一个回调函数来使用'data‘
https://stackoverflow.com/questions/2739160
复制相似问题