您好我正在努力将数组从php传回javascript。我在网上了解到,在传回数据时我应该在数组上使用json_encode,但现在我已经在ajax中使用它了,我不确定如何循环它,因为像response[0]
这样的操作会给我[
并且response[1]
给了我"
虽然当使用innerHTML将整个内容写入文档时,我可以看到它看起来像一个数组但是使用for循环给了我每个字母,如上所述{{1等于[而不是第一个条目。我究竟做错了什么?非常感谢任何帮助!
PHP
response[0]
的Ajax
<?PHP
$link = mysql_connect('localhost', 'root', 'root');
mysql_select_db("Colleges");
$result = mysql_query("SELECT * FROM `Colleges` ORDER BY School");
$schools = array();
while ($row = mysql_fetch_array($result)) {
array_push($schools, $row['School']);
}
mysql_close();
die(json_encode($schools));
?>
答案 0 :(得分:1)
您应该解码您的JSON响应(实际上是一个字符串),以便能够像对象一样使用它:
var respObj = JSON.parse(response);
另一种方式是注意jQuery将由服务器提供JSON(带有dataType: 'json'
ajax参数或Content-Type: application/json
响应头。)
答案 1 :(得分:0)
的Javascript
for ( variable in response ) {
alert(results[variable]);
}
JQuery的
$.each(response, function(ind, val){
alert("index:" + ind + ". value:" + val);
});
答案 2 :(得分:0)
在传递给ajax
方法的对象中,您应该尝试添加dataType: 'json'
以指定结果为json,或者您可以在php脚本中指定{{1}在调用header('Content-type: application/json');
这样做会导致die();
成为您期望的对象,而不是字符串。
最后,您可以保留原样,并调用成功回调response
,它将获取响应字符串并将其转换为对象,请参阅http://api.jquery.com/jQuery.parseJSON/
答案 3 :(得分:0)
Use Following if it helps
res=jQuery.parseJSON(response);
for(i=0;i<res.length;i++)
{
alert(res[i].propertyname);
}
这里的属性名称意味着json上的键。在你的情况下它可以是'School'或只是一个数字i或值也可以只是res [i]