学习getjson
我试图掌握使用$.getJSON
与来自PHP的数组。学习getjson
下面是一个简单的例子,我所要做的就是输出请求的信息。 alert(data)
应该返回数组对象吗?我没有提醒任何事情。
PHP文件(account.php):
$arr = array('items' => 5,'others' => 6);
echo $arr = json_encode($arr)
HTML文件:
所有的$("#unsubscribe").click(function() {
$.getJSON("account.php?", function(data) {
alert(data);
});
});
首先,它可能是一个好主意,如果你尝试在浏览器加载account.php
。你应该期望看到:
{"items":5,"others":6}
但是,你不会看到这个。您将看到一个解析错误,预计;
。因为你忘记了echo
这一行。
这就是为什么你看不到alert
。 PHP错误显然是无效的JSON,并查看浏览器的错误控制台会告诉你这个;)
要添加到这里,'alert(data)'将警告'[object]'try'alert(data.items +''+ data.others)' – gorelative 2012-04-17 16:02:16
@Kolink和Mike,在account.php的数组正是我所看到的。我完全没有注意到,即使[对象],所以我明显地做错了什么。 – stevenpepe 2012-04-17 16:09:42
@stevenpepe将您的Javascript更改为'$(document).ready(function(){$(“#unsubscribe”)。click(function(){alert('Click fired'); $ .getJSON(“account.php? “,函数(数据,状态,xhr){alert(status); alert(xhr.status); alert(data);});});});'告诉我们你看到了什么。如果您根本没有看到任何警报,问题出在您的点击处理程序上。 – DaveRandom 2012-04-17 16:15:14
在我的项目中,我正在使用转储函数查看json返回的数组。 这:
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;
//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += " ";
if(typeof(arr) == 'object') { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value) == 'object') { //If it is an array,
dumped_text += level_padding + "'" + item + "'"+"\\n";
if (level < 0)
dumped_text += dump(value,level+1);
} else {
dumped_text += level_padding + "'" + item + "' => '" + value + "'"+"\\n";
}
}
} else { //Stings/Chars/Numbers etc.
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}
尝试:PHP> $ ARR =阵列( '项目'=> 5, '其他'=> 6); php> $ arr = json_encode($ arr); php> echo $ arr; {“items”:5,“others”:6} – Andbdrew 2012-04-17 15:59:52
使用$ .post并返回值为json编码的var。然后遍历它,就好像它的一个对象一样......'data.items,data.others' – gorelative 2012-04-17 16:00:05