2010-04-12 146 views
0

訪問JSON數據時遇到問題。我是JSON和jquery的新手,所以可能有一個簡單的解決方案,我很樂意找到答案。從php訪問json數據

我的jQuery:

$.post(
    "currentPage.php", 
    { 
    'currentPage': 1 
    }, 
    function(data){ 
     $("body").append(data); 
    } 
); 

currentPage.php:

$returnArray['left'] = 'test_left'; 
$returnArray['right'] = 'test_right'; 

$returnArray['numLeft'][] = 1; 
$returnArray['numRight'][] = 2; 
$returnArray['numRight'][] = 3; 

print json_encode($returnArray); 

我試圖訪問這樣的數據:

data.left 
data['left'] 

但它返回空白,怎麼會是最好的如何訪問HTML文件中的數據?

+0

您要在哪裏訪問此數據?在PHP或JS端? – sbczk 2010-04-12 13:24:11

回答

2

我可能是錯的,但我不認爲post方法假定數據返回類型的json。您可以通過更改ajax功能來設置:

$.post(
    "currentPage.php", 
    { 
    'currentPage': 1 
    }, 
    function(data){ 
     $("body").append(data); 
    }, 
    "json" 
); 
1

在JQuery中,您需要將返回數據類型(dataType)設置爲json,以便該函數知道要預期和處理的數據類型。從手冊:

「json」:將響應評估爲JSON 並返回一個JavaScript對象。在 jQuery 1.4中,JSON數據以嚴格的方式在 中解析;任何格式不正確的JSON是 被拒絕並引發解析錯誤。 (有關 正確的JSON格式的詳細信息,請參閱json.org。)

您可以用全$.ajax()調用做到這一點,或者你可以使用$.getJSON()。沒有HTTP POST快捷方式返回JSON(即不存在$ .postJSON),但您可以提供dataType參數到$.ajax()或僅將參數添加到$.post()。當您有一個JSON對象時,請使用json.keyName來訪問數據。

$.ajax({ 
    url: "currentPage.php", 
    data: { 
     'currentPage': 1 
    }, 
    dataType: "json", 
    type: "post", 
    success: function(data) { 
     $("body").append(data); 
    } 
}); 
+0

這是不是真的,沒有捷徑,你可以提供數據類型作爲參數'post()' – 2010-04-12 13:33:37

+0

@Felix謝謝,更新 – Andy 2010-04-12 13:54:04

1

提供你希望得到作爲參數傳遞給.post()方法(在你的情況json)的數據類型:

$.post("currentPage.php",{'currentPage': 1}, 
    function(data){ 
    $("body").append(data); 
    }, 
    'json'  // <-- add the expected datatype 
); 

我覺得默認的是把結果作爲HTML。閱讀documentation

jQuery.post(URL,[數據],[成功(數據,textStatus,XMLHttpRequest的)],[的dataType])

烏拉到的請求被髮送含有所述URL串

數據A地圖或字符串被髮送到與請求的服務器。

success(data,textStatus,XMLHttpRequest)如果請求成功,則執行回調函數。

dataType服務器期望的數據類型。