我的服務返回以下JSON對象,並將Content-Type頭設置爲「application/javascript」。它包裹在每個指令parens json.org] 2,但我嘗試過和沒有parens。沒有parens,它通過了jsonlint的驗證。使用Prototype解析JSON結果的問題
({"products": {"itemId": "0", "productId": "1234", "quantity": "4", "rank": "12", "subProductId": ""}, "txnId": "1"})
如果我明確EVAL的反應,如下所示,我沒有問題:
var form = $('productListRequestForm');
form.request(
{
onSuccess :
function(response)
{
var json = eval(response.responseText);
rebuildWishlistTable(json);
},
onFailure :
function(response)
{
alert("AJAX request failed: " + response.responseText);
}
});
然而,如果我靠原型解析響應和通過解析的結果作爲第二個參數,以我的功能如下,該值始終爲空。根據Prototype docs,這應該工作。有什麼我錯過了,或者他們錯過了什麼?
var form = $('productListRequestForm');
form.request(
{
onSuccess : function(response, json)
{
rebuildWishlistTable(json);
},
onFailure :
function(response)
{
alert("AJAX request failed: " + response.responseText);
}
});
不,實際上沒有。正如我在我的文章中指出的那樣,顯式評估工作 - 正如我還注意到的那樣,我將JSON包裝在parens中來實現這一點。問題是Prototype的自動評估不起作用,無論JSON是否包裝在parens中。 – kdgregory 2009-09-24 19:07:15