0

您好我正在将一个数组从 php 传回给 javascript。response[0]我在网上了解到,在将数组传回时我应该在数组上使用 json_encode 但现在我将它放在 ajax 中[,我不确定如何循环它,因为虽然在将整个内容写到使用innerHTML的文档我可以看到它看起来像一个数组,但是使用for循环给了我上面所说的每个字母,等于[而不是第一个条目。我究竟做错了什么?任何帮助是极大的赞赏!response[1]"response[0]

PHP

<?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));
?>

阿贾克斯

<script type="text/javascript">
    function schools(){
        $.ajax({
            url: "Schools.php",
                type: "POST",
            success: function (response) {
                //Loop over response
            }
        });
    }
</script>
4

4 回答 4

1

您应该解码您的 JSON 响应(实际上是一个字符串),以便能够像使用对象一样使用它:

var respObj = JSON.parse(response);

另一种方法是注意到 jQuery 将由服务器提供 JSON(使用dataType: 'json'ajax 参数或Content-Type: application/json响应标头)。

于 2012-08-23T15:48:36.840 回答
0

Javascript

for ( variable in response ) {
    alert(results[variable]);
}

jQuery

$.each(response, function(ind, val){
   alert("index:" + ind + ". value:" + val);
});
于 2012-08-23T15:50:26.537 回答
0

在传递给ajax方法的对象中,您应该尝试添加dataType: 'json'以指定结果为 json,或者您可以在调用header('Content-type: application/json');之前在php 脚本调用中指定它die();

这样做将导致您response成为您期望的对象而不是字符串。

最后,您可以保持原样,并调用您的成功回调response = $.parseJSON(response);,它将获取响应字符串并将其转换为对象,请参阅http://api.jquery.com/jQuery.parseJSON/

于 2012-08-23T15:52:02.937 回答
0
Use Following if it helps

 res=jQuery.parseJSON(response);

for(i=0;i<res.length;i++)
{
  alert(res[i].propertyname);

}

这里的属性名称暗示 json 上的键。在您的情况下,它可以是“学校”或只是一个数字 i 或值也可以只是 res[i]

于 2012-08-23T15:52:20.640 回答