3 回答

TA贡献1836条经验 获得超4个赞
结果可能不是JSON格式,因此当jQuery尝试如此解析时,它将失败。您可以使用error:回调函数捕获错误。
无论如何,您似乎都不需要在该函数中使用JSON,因此您也可以删除该dataType: 'json'行。

TA贡献1851条经验 获得超4个赞
尽管问题已经解决,但我希望可以为他人提供帮助。
我犯了一个错误,试图直接使用这样的函数(成功:OnSuccess(productID))。但是您必须先传递一个匿名函数:
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;
}
如果不使用匿名函数作为包装器,则即使Web服务返回异常,也会调用OnSuccess。

TA贡献1998条经验 获得超6个赞
我尝试删除dataType行,但它对我不起作用。我通过使用“ complete”而不是“ success”作为回调来解决此问题。在IE中,成功回调仍然失败,但是由于我的脚本可以运行并完成,所以我只关心它。
$.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 ...
}
});
添加回答
举报