Javascript jQuery1.8Ajax调用返回null,尽管post响应具有值

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

我对jQuery ajax调用的返回值有问题。我可以调试整个服务器端,我知道一切都正常工作,返回值也正确计算。我可以查看FireBug中的“网络”选项卡下的响应:

{“d”:false}

但是当我在ajax调用的Success函数中测试该值时,msg为NULL。为什么?

以下是ajax调用:

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。