クロスドメインPOSTリクエストを実行しようとしていますが、壁にぶつかりました(または2つ)。
サーバーにプロキシページを配置できません。そのため、これはオプションではありません。
私はgetJSONを調査しました。これは、GETではなくPOSTする必要があることを除けばうまく機能します。
これを行うことは可能ですか?そうでない場合は、誰かがgetJSONのしくみと、POSTの代替を作成できない理由を説明してもらえますか。
クロスドメインPOSTリクエストを実行しようとしていますが、壁にぶつかりました(または2つ)。
サーバーにプロキシページを配置できません。そのため、これはオプションではありません。
私はgetJSONを調査しました。これは、GETではなくPOSTする必要があることを除けばうまく機能します。
これを行うことは可能ですか?そうでない場合は、誰かがgetJSONのしくみと、POSTの代替を作成できない理由を説明してもらえますか。
XMLHttpRequest (別名 AJAX) を使用してクロスドメイン要求 (GET / POST / など) を作成することはできません。
サーバーがサポートしている場合にできることは、JSONP リクエストを作成することです。JSONP リクエストは次のように機能します。
投稿先のサーバーを制御できない場合は運が悪く、JSONP はあまり役に立ちません。サーバーが返すものは何でも SCRIPT タグにあり、正しくフォーマットされていないとエラーをスローする可能性が高くなります。
詳細については、ショートカットではなくベースの $.ajax 関数を参照することをお勧めします。(Ajaxの下のjQueryドキュメント。申し訳ありませんが、これ以上リンクを投稿できません)
繰り返しになりますが、投稿先のサーバーを制御できない場合は、可能であればプロキシを調べることをお勧めします。それ以外の場合は、IFRAME が唯一の選択肢になる可能性があります。SWF (flash) オブジェクトを使用してこれを実現する方法もあります。私はどちらも試していませんが、XMLHttpRequest オブジェクトの制限に対する回避策です。
私が助けてくれることを願っています!
投稿はできますが、クロスドメインの問題を回避するための JSONP リクエストが必要です。基本的に、コールバック関数を提供すると、リクエストがスクリプト コンテンツとして返され、リクエストからの JSON データでコールバックが呼び出されます。サーバー側のスクリプトは、JSON オブジェクトにラップされたコールバック関数を使用して、関数呼び出しとしてデータを返す必要があります。
post関数のドキュメントを参照してください。
$.post( '/example.com/controller/action?callback=?',
{ param: "data" },
function(data) {
...do something with the data...
}, 'jsonp' );
このための ASP.NET MVC アクション:
[AcceptVerbs( HttpVerbs.Post )]
public ActionResult Action( string param, string callback )
{
var jsonData = ...do something and construct some data in JSON...
return Content( callback + "(" + jsonData + ");" );
}
クロス ドメイン POST を実行する場合、最も簡単な解決策は、ここで Matteo が提供するものです。それは私にとってうまくいきました