0

我有以下调用 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>
4

2 回答 2

4

我看到您包含服务器名称 ( localhost) 和端口 ( 27249)。Ajax 请求由Same Origin Policy控制,正常情况下禁止跨域请求。(如果您不进行跨域调用,则不需要包含http://localhost:27249URL 的部分,这让我认为您可能会这样做。)

如果浏览器支持跨域调用并且您的服务器代码正确处理CORS请求,则您可以进行跨域调用。或者,您可能会考虑使用JSON-P

于 2012-04-27T14:09:27.273 回答
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等库加载器。

于 2012-04-27T14:21:00.077 回答