2012-08-23 129 views
0

嗨我正在从PHP回传数组到javascript。我在网上了解到,我应该在数组上使用json_encode,但现在我已经在ajax中了,我不确定如何循环播放它,因为像response[0]这样的操作可以给我[response[1]给我"虽然在写整个文件使用innerHTML我可以看到它看起来像一个数组,但使用for循环给我每个字母就像我上面说的response[0]等于[而不是第一个条目。我究竟做错了什么?任何帮助是极大的赞赏!传递数组从PHP返回到JavaScript并循环它

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> 

回答

1

你应该解码的JSON响应(这是一个字符串实际上)能够与它的工作作为一个对象:

var respObj = JSON.parse(response); 

o其他方法是注意到jQuery将由服务器提供JSON(带有dataType: 'json' ajax参数或Content-Type: application/json响应标头)。

+0

谢谢,这是我忘了:) – GFlam

0

的Javascript

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

JQuery的

$.each(response, function(ind, val){ 
    alert("index:" + ind + ". value:" + val); 
}); 
+0

'响应'应该是一个数组;不建议用'for-in'来循环访问数组。使用jQuery,相当不错的'$ .each'方法可用;没有,旧的硬皮'for(var i = 0,l raina77ow

+0

好点,我也加入了jQuery版本。 – adam

0

在你传递给ajax方法的对象,你应该尝试添加dataType: 'json'以指定的结果是JSON或你可以指定它在您的PHP脚本呼吁header('Content-type: application/json');之前致电die();

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

最后,你可以保留原样,并在你的成功回调response = $.parseJSON(response);将采取响应字符串并把它变成一个对象打电话,看http://api.jquery.com/jQuery.parseJSON/

0
Use Following if it helps 

res=jQuery.parseJSON(response); 

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

} 

这里属性顾名思义对键JSON。在你的情况下,它可以是'学校'或只是一个数字我或价值也可以只是水库[我]