jQuery ajax跨域发布到WCF休息服务

时间:2012-04-11 16:42:06

标签: wcf rest jquery

我正在尝试对WCF休息服务进行跨域POST。以下是我获取请求的服务代码

[WebInvoke(UriTemplate = "", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    public SampleItem Create(SampleItem instance)
    {

        instance.StringValue += " -success";
        return instance;
    }

在客户端,我有以下jquery ajax调用

 var input = { "Id": 10, "StringValue": "Test Value" };

                $("#post").click(function () {
                    $.ajax({
                        type: "POST",
                        url: "http://localhost:50577/Service1/",
                        dataType: "jsonp",
                        data: JSON.stringify(input),
                        processData: false,
                        success: function(item) {
                            $("#itemId").val(item.Id);
                            $("#name").val(item.StringValue);
                        },
                        error: function(xhr) {
                            alert("error " + xhr.responseText);
                        }
                    });

当我在服务器端调试代码时,请求将转到方法但实例参数为null。在同一个项目中,我有一个跨域get,它没有任何问题。 如果我将客户端更改为在同一个域中并将数据类型更改为json,则可以正常工作。

跨域发布是不可能的?或者还有什么我需要做的才能让这个工作。

1 个答案:

答案 0 :(得分:0)

您回答了第一个问题,因为您可以调试服务!

AJAX调用的JSON输入格式不正确。试试这个:

...
data: JSON.stringify({instance : input}),
...