2011-11-02 67 views
-2

這裏$ fruit由js_encode()編碼併發送回ajax中的數據。我的問題是數據的數據類型是什麼(字符串或數組)? 在此先感謝!成功數據的類型是什麼:函數(數據)?

$.ajax({ 
           type:"post", 
           dataType:"json", 

           url:"phpFile.php", 
           success: function(data) { 


           } 
          }); 

<?php 
    $fruits = array(array("1","apple"),array("2","pear")); 
    echo js_encode($fruits); 
?> 
+1

我想你的意思是使用json_encode($水果),除非你已經寫了一個名爲js_encode功能。 –

回答

3

您指定響應的數據類型爲json。 jQuery將嘗試自動將數據解碼爲JSON,並將生成的JavaScript數據類型傳遞給回調函數。所以data可以是布爾null陣列對象

在您的具體情況下,您將PHP數組編碼爲JSON,所以結果將是一個數組。

+0

如果解析JSON字符串,則只能有一個數組或一個對象。其他數據類型可以在內部表示,但最外面的數據類型只能是數組或對象。 – Quentin

+0

@Quentin:嗯,你是對的...我發誓我已經看到jsonlint聲明''somestring''是有效的JSON,但現在它不會...奇怪。 Imo'JSON.stringify(「foo」)'應該會失敗,儘管如此... –

+0

也許現在已修復jsonlint中的錯誤? – Quentin

2

它不會是任何東西。成功的方法永遠不會被觸發,因爲PHP會出錯Fatal error: Call to undefined function js_encode(),這將返回500錯誤,所以jQuery將觸發error函數(如果存在)而不是success函數。

如果您要修復PHP並使用json_encode,那麼它會輸出一個頂級數組的JSON,因此data將是一個數組。

請注意,您還應該確保您的腳本不聲明JSON是HTML。

header('Content-Type: application/json'); 
0

data變量將包含以下內容: [["1","apple"],["2","pear"]]

相關問題