【问题标题】:Jquery Not Showing Json Data From WCFJquery 不显示来自 WCF 的 Json 数据
【发布时间】:2013-02-25 03:12:17
【问题描述】:

我写了一个简单的 WCF 方法。它返回正确的值,但显示的是 200

    $.ajax({
        url: "http://localhost:60770/Service.svc/GetContacts?calback=?",
        type: "POST",
        dataType: "JSON",
        contentType: "application/json",
        data: "{}",
        crossDomain: true,
        processdata: true,
        success: function (response) {
        //    var data = response;
            alert("data.FirstName");
        },

        error: function (e) {
            alert('error ' + e.status + ' ' + e.responseText);

        }
    });

当我使用 FireBug 检查响应时,它会出错。它在那里显示 Json。

请帮忙!!

【问题讨论】:

  • 返回的数据是什么样的?
  • 错误状态/文本是什么?
  • 对于 jsonp 请求 dataType 应该是jsonp, type -> get
  • {"d":"hello"},responseText 未定义,状态为 200
  • 有什么猜想吗?等待回复..

标签: jquery ajax wcf cross-domain


【解决方案1】:

看起来您在这里混合使用 JSON 和 JSONP。

您有 crossDomain:true,绝对 URL,但指向本地主机。那么您在示例?calback=? 中有错字(缺少“l”和第二个“?”)。

在 JSONP 中你的:

/GetContacts?calback=myFunction

您期望的结果如下:myFunction({"d":"Hello"})

myFunction 将被自动调用。在你的情况下“?”是函数的名称。而 WCF、.NET 4 它支持 JSONP,但你必须启用它: How to natively enable JSONP for existing WCF service?

所以我会关闭crossDomain:true 并提供不带callback 参数的相对网址,或者阅读一下JSONP: What is JSONP all about?

【讨论】:

  • 感谢您的回复..我有跨域使用,例如:www.example.com/Services.svc 但事情不正常,所以我在本地创建了一个服务。请指导我如何使其适用于跨域。
  • 你现在有足够的线索来修复它。只需阅读自己阅读这 2 篇短文即可。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 2013-07-30
  • 2021-03-24
相关资源
最近更新 更多