0

フロントエンドとバックエンドの相互作用に問題があります。データを送信していることは比較的確信していますが、後でデータにアクセスできません。ごく最近、このコード テンプレート (mozilla のヘルプ ページのリンク から) を使用してデータを送信しました。JavaScript:

function sendData(data) {
      var XHR = new XMLHttpRequest();
      var urlEncodedData = "";

  // We turn the data object into a URL encoded string
  for(name in data) {
    urlEncodedData += name + "=" + data[name] + "&";
  }

  // We remove the last "&" character
  urlEncodedData = urlEncodedData.slice(0, -1);

  // We URLEncode the string
  urlEncodedData = encodeURIComponent(urlEncodedData);

  // encodeURIComponent encode a little to much things
  // to properly handle HTTP POST requests.
  urlEncodedData = urlEncodedData.replace('%20','+').replace('%3D','=');

  // We define what will happen if the data are successfully sent
  XHR.addEventListener('load', function(event) {
    alert('Yeah! Data sent and response loaded.');
  });

  // We define what will happen in case of error
  XHR.addEventListener('error', function(event) {
    alert('Oups! Something goes wrong.');
  });

  // We setup our request
  XHR.open('POST', 'http://ucommbieber.unl.edu/CORS/cors.php');

  // We add the required HTTP header to handle a form data POST request
  XHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  XHR.setRequestHeader('Content-Length', urlEncodedData.length);

  // And finally, We send our data.
  XHR.send(urlEncodedData);
}

HTML:

<button type="button" onclick="sendData({test:'ok'})">Click Me!</button>

私の質問は次のとおりです。データを送信するより良い方法はありますか (ノードにより適しています)? また、サーバー側のデータにアクセスするにはどうすればよいですか?

4

1 に答える 1

0

データを送信するより良い方法はありますか?

これはかなり主観的な質問ですが、別の方法があります。非表示の要素を含むフォームを作成し、 を使用してサーバーに送信できますFormData()。これにより、快適なファイル処理も可能になります。

<form onsubmit="xhrsend(event,this)" method="POST" enctype="multipart/form-data" action="http://ucommbieber.unl.edu/CORS/cors.php">
  <input type="hidden" name="myName" value="myValue"/>
  <input type="file" name="myFile"/>
  <input type="submit" value="Send"/>
  ...
</form>

ユニバーサル JS を使用して XHR に任意のフォームを送信する

function xhrsend(ev,frm) {
  ev.preventDefault(); // prevent submiting form
  var XHR = new XMLHttpRequest();
  XHR.addEventListener(...); // whatever
  XHR.open('POST', frm.action, true);
  XHR.send(new FormData(frm)); // send form data
  this.reset(); // optional: reset form values
}

サーバー側のデータにアクセスするにはどうすればよいですか?

この質問では、node.js サーバーで POST データを処理する方法について説明します。

注: node.js を使用する場合は、websocketsを確認することをお勧めします。これは、XHR よりも多くのことができます (サーバーからクライアントへのメッセージの送信など)。

于 2013-06-27T12:51:08.837 に答える