【问题标题】:Calling JSON-enabled WCF service with jQuery returns null使用 jQuery 调用启用 JSON 的 WCF 服务返回 null
【发布时间】:2010-10-17 18:28:16
【问题描述】:

我的网页中有以下脚本,用于调用我创建并托管在我的 Web 服务器上的启用 JSON 的 WCF 服务。但是,警报显示“null”。当我在浏览器中指向 url 时,它会返回非常简单的 JSON:{"city":"Ann Arbor"}。此外,当我在运行 Fiddler 的情况下运行包含以下代码的页面时,我可以看到服务被命中并且 JSON 返回。但是下面的成功函数仍然返回null。有人知道我在做什么错吗?谢谢。 -内德

<script type="text/javascript">
    $.ajax({
        type: "GET",
        url: "http://192.168.192.17:8080/Service.svc/class/",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            alert(data);
        }
    });
</script>

【问题讨论】:

    标签: ajax wcf json jquery


    【解决方案1】:

    我怀疑问题来自这样一个事实,即您尝试使用 AJAX 调用 Web 服务,而 AJAX 与调用脚本不在同一个域中,因此您违反了same origin policy。如果您希望能够使用 AJAX 调用 http://192.168.192.17:8080/Service.svc,则调用脚本也需要托管在 http://192.168.192.17:8080 上。

    作为一种可能的解决方法,您可以使用服务器端脚本作为与客户端脚本托管在同一域上的桥接器,或者如果您可以控制 Web 服务,则使用 JSONP

    【讨论】:

    • 我最终将它托管在同一个域上,目前还可以。感谢您的帮助。
    【解决方案2】:

    您可以定义一个错误函数来查看问题所在:

    $.ajax({
      error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert(errorThrown)
      },
      //.......
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多