2012-05-09 12 views
5

POSTが必要なWCFサービスがあります。 Fiddlerを使用すると、クロスドメインの状況でPOST要求がGETに変更され、サーバーからエラー405が発生することがわかりました。JQuery ajaxクロスドメイン時にJSONP POSTがGETに変更されました

$.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--"); 
    } 
}); 

誰もがこれにいくつかの光を当てることができますか?

おかげ

+1

これは実際に重複しているわけではありませんが、この質問に対する回答は次のとおりです。http://stackoverflow.com/questions/2699277/post-data-to-jsonp – lonesomeday

答えて

0

あなたがもはやJSON.stringifyをやった後、名前/値のペアを持っていないので、GETするためにそれを変換しています。あなたは文字列を持っています。 POSTには名前と値のペアが必要です。

+0

データをJSON.stringifyしないでくださいオブジェクトの連続表現を渡すことを意味します。 –

+0

彼は文字通りにするべきではありません。 'stringify'へのパラメータはすでに「文字列化」されています。これはJSオブジェクトではありません(文字列です)。ストライピングはそれを二重エンコードしますが、失敗するでしょう。 – carlosfigueira

+0

POSTリクエストでデータを送信するには、実際には(要求本体内に)オブジェクトのシリアル化バージョンを渡す必要があります。 – carlosfigueira

10

POSTとJSONPはありません。 JSONPは、DOMに新しいスクリプトタグを作成し、GET要求をサーバーに送信します。あなたはjQuery.ajaxに2つの互換性のないパラメータ(POST、jsonp)を与えています.jQueryはもう一方を選択しています。

1つのアップデート:CORS(クロスソースリソース共有)のようなものを使用すると、GET以外のリクエストをクロスドメインサービスに使用できます。 WCFはそれをすぐにサポートしていませんが、WCFで実装するための投稿をhttp://blogs.msdn.com/b/carlosfigueira/archive/2012/05/15/implementing-cors-support-in-wcf.aspxに書いています。

+0

Downvoter、なぜかコメントする? – carlosfigueira

関連する問題