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);
                        }
                    });

サーバー側でコードをデバッグすると、リクエストはメソッドに送信されますが、インスタンス引数は null です。同じプロジェクトで、クロス ドメインの get を使用していますが、これは問題なく動作しています。クライアントを同じドメインに変更し、データ型を json に変更すると、正常に動作します。

では、クロスドメイン投稿は不可能ですか? または、これを機能させるために他に何かする必要がありますか。

4

1 に答える 1

0

サービスをデバッグできるので、最初の質問に答えました!

AJAX 呼び出しへの JSON 入力が正しい形式ではありません。これを試して:

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