2012-04-17 86 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; 
}