为什么这个$ .getJSON请求错误?

时间:2012-04-27 14:05:21

标签: javascript jquery json getjson

我有以下脚本调用http处理程序。它调用http处理程序,在fiddler中,我可以看到JSON正确返回,但是这个脚本总是在错误块中结束。我怎样才能确定出错了什么?

    <script type="text/javascript">
        function GetConfig() {
            $.getJSON("http://localhost:27249/Handlers/GetServiceMenuConfiguration.ashx", function(d) {
                alert("success");
            }).success(function(d) {
                alert("success");
            }).error(function(d) {
                alert("error");
            }).complete(function(d) {
                alert("complete");
            });
        }
    </script>

2 个答案:

答案 0 :(得分:4)

我看到您包含服务器名称(localhost)和端口(27249)。 Ajax请求由Same Origin Policy控制,CORS在正常情况下禁止跨源请求。 (如果您没有进行跨域通话,则不需要包含网址的http://localhost:27249部分,这也是我认为您可能正在执行此操作的部分。)

如果浏览器支持跨域调用,并且服务器代码正确处理JSON-P请求,则可以执行跨源调用。或者,您可以查看使用{{3}}。

答案 1 :(得分:0)

JQuery的内置JSON解析器相当挑剔,即使格式良好,如果标头设置不完美,JSON有时也会失败。首先尝试使用type:text属性执行$ .ajax请求并记录响应。这将区分连接问题和解析问题。

$.ajax({
  dataType:'text',
  url: '/Handlers/GetServiceMenuConfiguration.ashx',
  success: function(data) {
      console.log(data.responseText);
  }
});

如果问题是连接,并且您确实需要跨域请求JSON,那么您还可以使用像LAB,yep / nope或Frame.js这样的库加载器。