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 は、GET 要求をサーバーに送信する新しいスクリプト タグを DOM に作成することによって機能します。jQuery.ajax に互換性のない 2 つのパラメーター (POST、jsonp) を指定しており、jQuery は一方を選択しています。

1 つの更新: CORS (Cross-Origin Resource Sharing) などを使用して、クロスドメイン サービスへの非 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 に答える