Javascript jQuery1.8Ajax调用返回null,尽管post响应具有值
我对jQuery ajax调用的返回值有问题。我可以调试整个服务器端,我知道一切都正常工作,返回值也正确计算。我可以查看FireBug中的“网络”选项卡下的响应: {“d”:false} 但是当我在ajax调用的Success函数中测试该值时,msg为NULL。为什么? 以下是ajax调用:Javascript jQuery1.8Ajax调用返回null,尽管post响应具有值,javascript,jquery,ajax,Javascript,Jquery,Ajax,我对jQuery ajax调用的返回值有问题。我可以调试整个服务器端,我知道一切都正常工作,返回值也正确计算。我可以查看FireBug中的“网络”选项卡下的响应: {“d”:false} 但是当我在ajax调用的Success函数中测试该值时,msg为NULL。为什么? 以下是ajax调用: function GetStateCertifiable(areaID) { $.ajax({ url: "../WebServices/AoP.asmx/GetStateCerti
function GetStateCertifiable(areaID) {
$.ajax({
url: "../WebServices/AoP.asmx/GetStateCertifiable",
data: '{"AreaID":"' + areaID + '"}',
dataType: 'json',
success: function (msg) {
alert(msg); // for debugging
if (msg)
$("#isCertified").slideDown("fast");
else
$("#isCertified").slideUp("fast");
},
error: function (msg) {
alert("An error occured. \nStatus: " + result.status
+ "\nStatus Text: " + result.statusText
+ "\nError Result: " + result);
},
complete: function () {
}
});
};
其他结构类似的客户端调用也可以正常工作。这是同一个域请求。尝试将变量名称更改为msg以外的名称。我想那可能是一个信息框或类似的东西。试一试
function GetStateCertifiable(areaID) {
$.ajax({
url: "../WebServices/AoP.asmx/GetStateCertifiable",
data: '{"AreaID":"' + areaID + '"}',
dataType: 'json',
success: function (result) {
alert(result); // for debugging
if (result)
$("#isCertified").slideDown("fast");
else
$("#isCertified").slideUp("fast");
},
error: function (result) {
alert("An error occured. \nStatus: " + result.status
+ "\nStatus Text: " + result.statusText
+ "\nError Result: " + result);
},
complete: function () {
}
});
};
问题是,我的web服务(../WebServices/AoP.asmx/GetStateCertifiable)返回了一个bool,从post响应中,我知道该bool已正确发送回客户端。然而,Ajax不喜欢这样。一旦我将web服务更改为返回字符串“true”或“false”,一切都正常了
jqueryajax是否只对字符串起作用,或者我应该做些什么来准备msg对象以接收bool?Does
alert(msg)
确实输出空值,并且检查器{“d”:false}
?脱离主题:使用console.log()进行调试。好吧,必须这样回答(删除它)-您从未对我上面的评论作出响应。但是当您没有得到null时,您应该按照我的建议进行计算。是的,alert(msg)显示null。嗯,msg
在本地范围内,因此这不是原因。无论如何值得一试-运气不好。它必须是有效的JSON。json中的布尔值是有效的,如果接收到无效的json,则不会得到null。所以,在这种情况下,接收null是没有意义的,除非你的服务器真的发送null…而你投票否决了我什么?我在最初的帖子中解释说,我没有收到空值,我得到了{“d”:false}。然而,ajax调用似乎没有正确地解释这一点。正如我上面解释的那样,我修复了它(这不值得一个“答案不有用”投票。我问了为什么会这样,但你没有提供任何有用的信息。我发现这不清楚,也不是无用的。你所描述的问题不应该是jQuery Ajax的问题。需要更多的研究。这个答案不包括为什么你会得到null而不是对象。下面是jQuery的json解析器示例(提示:它使用JSON.parse)正确解析布尔值:谢谢-因为result解析为NULL,$.parseJSON(result)似乎也解析为NULL。