5

我有一个期待 POST 的 WCF 服务。使用 Fiddler 我发现在跨域情况下,我的 POST 请求被更改为 GET,这导致服务器出现错误 405。

$.ajax({
    type: "POST",
    url: "http://blah/blah.svc/Test",
    data: JSON.stringify("{ 'WebUserID': 4 }"),
    dataType: "jsonp",  // from server
    contentType: "application/json; charset=utf-8", // to server
    success: function (data, status, xhr) {
        alert("success--");
    }
});

任何人都可以对此有所了解吗?

谢谢

4

2 回答 2

10

没有 POST 和 JSONP。JSONP 通过在 DOM 中创建一个新的脚本标签来工作,该标签向服务器发送 GET 请求。您给 jQuery.ajax 提供了两个不兼容的参数(POST、jsonp),而 jQuery 选择了另一个。

一个更新:您可以使用诸如 CORS(跨域资源共享)之类的东西来启用对跨域服务的非 GET 请求。WCF 不支持开箱即用,但我在http://blogs.msdn.com/b/carlosfigueira/archive/2012/05/15/implementing-cors上写了一篇关于在 WCF 中实现它的文章-support-in-wcf.aspx

于 2012-05-09T18:35:54.590 回答
0

JSON.stringify它将其转换为 GET 因为在执行;之后您不再拥有名称/值对。你只有一个字符串。POST 需要名称/值对。

于 2012-05-09T17:30:50.327 回答