0

我正在尝试对 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);
                        }
                    });

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

那么跨域发布是不可能的吗?或者我还需要做些什么来让它工作。

4

1 回答 1

0

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

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

...
data: JSON.stringify({instance : input}),
...
于 2012-04-11T17:23:02.823 回答