web-dev-qa-db-ja.com

JavaScriptを使用してリモートサーバーにデータを送信する方法

JavaScriptを使用してリモートサーバーにデータを送信する必要があります。どうすればよいですか?

Background info: JSを使用して情報を抽出するWebページがあり、処理のために別のサーバーに送り返す必要があります。対応は必須ではありません。データはXMLですが、これをURLエンコードしました。

どうすればいいですか?

[〜#〜]編集[〜#〜]

データを要求しているサーバーは、データを受信するサーバーとは異なります。明確にするために。

12

これを行う最も一般的な方法の1つはAJAXです。 jQueryを使用してAJAX postリクエストを実行する方法は次のとおりです。

<script type="text/javascript">
  $.post('/remote-url', {xml: yourXMLString });
</script>

サーバー側では、他のPOSTリクエストと同じように処理します。PHPを使用している場合は、$xml = $_POST['xml'];

AJAX=の最大の制限は、ドキュメントがロードされたのと同じドメイン(別名クロスドメインポリシー)へのリクエストしか許可されないことです。この制限を克服するためのさまざまな方法があります。 、最も簡単なのは [〜#〜] jsonp [〜#〜] です。


UPD。クロスドメインリクエストの場合、非常に単純な(普遍的ではありませんが)ソリューションは次のようになります。

(new Image).src = 'http://example.com/save-xml?xml=' + escape(yourXMLString)

これにより、GETリクエストが発行されます(Internet Explorerでは2KBを超えることはできません)。 POSTリクエストまたは大きなリクエスト本文のサポートが絶対に必要な場合は、ドメインでサーバー側の中間スクリプトを使用するか、動的に作成されたHTMLフォームをiframeに投稿できます。

20
Alexey Lebedev
  • pOSTを使用してフォームを送信します。これは、すべてのブラウザのクロスドメインで機能しています。サーバーに投稿を処理してもらいます。 AJAXをシミュレートする場合は、フォームを非表示フレームに送信できます
  • 使用 クロスドメインリソース共有[〜#〜] mdc [〜#〜] )( IE XDR
  • webバグを使用します(画像を作成し、ソースを必要なURLに設定します-小さめのGETリクエストのみ)

    var img = new Image();
    img.src="http://www.otherserver.com/getxml?xml="+encodeURIComponent(yourXML);(おっと、レベデフのアップデートで多かれ少なかれ同じように見えた)

  • proxy を使用します。つまり、サーバーに他のサーバーと通信させます

6
mplungjan

JavaScriptのXMLHTTPRequestメソッドを調べてください。または、AJAXのGoogle検索から始めてください。これを行うには多くの方法があります-jQueryのようなJSライブラリを介していくつかの非常に簡単な方法を含みます-しかし、より具体的な答えは、使用している特定のテクノロジーのいくつかのより具体的なものを必要とします。

編集:AJAXリクエストを自分のドメインのサーバー側スクリプト(プロキシとして機能)に投稿するように設定できます)を設定して、そのスクリプトで向きを変え、データをリモートサーバーに投稿できます。 。

0
Matt Howell