3 回答

TA貢獻1836條經(jīng)驗 獲得超4個贊
結(jié)果可能不是JSON格式,因此當(dāng)jQuery嘗試如此解析時,它將失敗。您可以使用error:回調(diào)函數(shù)捕獲錯誤。
無論如何,您似乎都不需要在該函數(shù)中使用JSON,因此您也可以刪除該dataType: 'json'行。

TA貢獻1851條經(jīng)驗 獲得超4個贊
盡管問題已經(jīng)解決,但我希望可以為他人提供幫助。
我犯了一個錯誤,試圖直接使用這樣的函數(shù)(成功:OnSuccess(productID))。但是您必須先傳遞一個匿名函數(shù):
function callWebService(cartObject) {
$.ajax({
type: "POST",
url: "http://localhost/AspNetWebService.asmx/YourMethodName",
data: cartObject,
contentType: "application/x-www-form-urlencoded",
dataType: "html",
success: function () {
OnSuccess(cartObject.productID)
},
error: function () {
OnError(cartObject.productID)
},
complete: function () {
// Handle the complete event
alert("ajax completed " + cartObject.productID);
}
}); // end Ajax
return false;
}
如果不使用匿名函數(shù)作為包裝器,則即使Web服務(wù)返回異常,也會調(diào)用OnSuccess。

TA貢獻1998條經(jīng)驗 獲得超6個贊
我嘗試刪除dataType行,但它對我不起作用。我通過使用“ complete”而不是“ success”作為回調(diào)來解決此問題。在IE中,成功回調(diào)仍然失敗,但是由于我的腳本可以運行并完成,所以我只關(guān)心它。
$.ajax({
type: 'POST',
url: 'somescript.php',
data: someData,
complete: function(jqXHR) {
if(jqXHR.readyState === 4) {
... run some code ...
}
}
});
在jQuery 1.5中,您也可以這樣做。
var ajax = $.ajax({
type: 'POST',
url: 'somescript.php',
data: 'someData'
});
ajax.complete(function(jqXHR){
if(jqXHR.readyState === 4) {
... run some code ...
}
});
添加回答
舉報