2012-04-17 56 views
1

我试图掌握使用$.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);  
    }); 
}); 
+0

尝试:PHP> $ ARR =阵列( '项目'=> 5, '其他'=> 6); php> $ arr = json_encode($ arr); php> echo $ arr; {“items”:5,“others”:6} – Andbdrew 2012-04-17 15:59:52

+0

使用$ .post并返回值为json编码的var。然后遍历它,就好像它的一个对象一样......'data.items,data.others' – gorelative 2012-04-17 16:00:05

回答

2

首先,它可能是一个好主意,如果你尝试在浏览器加载account.php。你应该期望看到:

{"items":5,"others":6} 

但是,你不会看到这个。您将看到一个解析错误,预计;。因为你忘记了echo这一行。

这就是为什么你看不到alert。 PHP错误显然是无效的JSON,并查看浏览器的错误控制台会告诉你这个;)

+0

要添加到这里,'alert(data)'将警告'[object]'try'alert(data.items +''+ data.others)' – gorelative 2012-04-17 16:02:16

+0

@Kolink和Mike,在account.php的数组正是我所看到的。我完全没有注意到,即使[对象],所以我明显地做错了什么。 – stevenpepe 2012-04-17 16:09:42

+0

@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

0

在我的项目中,我正在使用转储函数查看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; 
}