2012-02-20 77 views
0

我在做一個AJAX調用頁面/person/stevePHP的json_encode和jQuery

$.ajax({ 
    url:  '/person/steve', 
    method: 'POST', 
    dataType: 'json', 
    success: function(response){ 
    console.log(JSON.stringify(response)); 
    } 
}); 

/person/steve由這個代碼:現在

$person = array(
    'name' => 'Steve', 
    'twitter' => '@stevelindstrom' 
); 

echo json_encode(array('data' => $person)); 
die; 

,在我的PHP,當我登錄的結果該json_encode使用PEAR Log類的,我得到:

{"data":{"name":"Steve","twitter":"@stevelindstrom"}} 

這是我所期望的,但如果我看在Chrome開發工具的響應,它顯示:

[{"data":{"name":"Steve","twitter":"@stevelindstrom"}}] 

任何想法,爲什麼我的對象陷入到一個數組中?我有一個幾乎是一樣的(只是不同的數據)的其他頁面,並且顯示在我所期望的那樣......

編輯:我嘗試使用JSON_FORCE_OBJECT和我得到了相同的結果。

+1

如果在轉儲到控制檯之前沒有進行串聯操作,它會不同嗎? – 2012-02-20 16:35:04

+0

告訴jquery數據類型是json,它會自動將json字符串解碼爲本機結構。然後,您可以在console.log調用中將該結構重新編碼爲json字符串。所以這是json庫做額外的數組。 'console.log(response)'顯示什麼? – 2012-02-20 16:36:10

+0

忽略javascript的那一行 - 我正在查看'Chrome開發工具'中的'HTTP響應,我相信它在它到達javascript之前。但是,爲了好奇,'console.log'顯示了與HTTP響應相同的內容。 – Steve 2012-02-20 16:43:13

回答

0

嘗試增加以json_encode作爲第二個參數JSON_FORCE_OBJECT ,做你返回JSON或字符串,我指的是Content-type頭,是text/html或(這應該是在這種情況下)application/json? 或者,也許只是JSON.stringify方法將其包裝到一個數組中,嘗試使用蜻蜓或其他工具來查看服務器的原始響應的來源。

+0

剛剛嘗試過 - 相同的結果:( – Steve 2012-02-20 16:36:09

+0

它已經爲關聯數組生成對象,沒有其他方法可以對它們進行編碼 – 2012-02-20 16:37:56

0

根據你的問題,響應是一個json字符串。這將使JSON.Stringify調用冗餘。刪除它,看看會發生什麼。

+0

正確的是,但我正在尋找Chrome開發工具,這是實際的HTTP響應,之前它看到了javascript。 – Steve 2012-02-20 16:37:48

+0

這是在網絡窗格還是控制檯? – Alex 2012-02-20 17:03:17

+0

它在網絡窗格中。 – Steve 2012-02-20 17:11:26