将数组从php传递回javascript并循环遍历它

时间:2012-08-23 15:46:29

标签: php ajax json

您好我正在努力将数组从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));
?>

4 个答案:

答案 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]