-1

我写了一个简单的 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。

请帮忙!!

4

1 回答 1

0

看起来您在这里混合了 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并提供不带参数的相对 url callback,或者阅读一下 JSONP:JSONP 到底是什么?

于 2013-03-09T17:46:32.503 回答