13

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

背景情報: JSを使用していくつかの情報を抽出するWebページがあり、処理のために別のサーバーに送り返す必要があります。応答は必要ありません。データはXMLで、URLエンコードしました。

どのようにこれを行うでしょうか?

編集

私がデータを要求しているサーバーは、データを受信するサーバーと同じではありません。明確にするために。

4

3 に答える 3

20

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

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

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

AJAXの最大の制限は、ドキュメントがロードされたのと同じドメイン(別名クロスドメインポリシー)に対してのみリクエストを行うことができることです。この制限を克服するにはさまざまな方法がありますが、最も簡単な方法の1つはJSONPです。


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

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

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

于 2011-02-19T08:11:18.727 に答える
6
  • POSTを使用してフォームを送信します。これは、ドメインをまたがるすべてのブラウザで機能しています。サーバーに投稿を処理させます。AJAXをシミュレートする場合は、フォームを非表示のフレームに送信できます
  • クロスドメインリソース共有MDC)を使用する( IE XDR
  • Webバグを使用する(画像を作成し、ソースを必要なURLに設定します-小さいGETリクエストのみ)

    var img = new Image();
    img.src="http://www.otherserver.com/getxml?xml="+encodeURIComponent(yourXML); (おっと、私はレベデフが彼のアップデートで多かれ少なかれ同じことをしたのを見ます)

  • プロキシを使用します。つまり、サーバーが他のサーバーと通信するようにします。

于 2011-02-19T09:43:27.410 に答える
0

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

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

于 2011-02-19T08:05:57.273 に答える