0

私は AJAX を学ぶのが初めてで、Web 開発もまったく初めてで、ローカル サーバーとリモート サーバーがポスト リクエストを処理するのに問題があります。node.js と Express モジュールを使用しています。

これが私のサーバーのコードです:

var express = require('express');

//start server
var app = express.createServer();

//handle requests
app.post('/hello', function(req, res){
    res.send("hello");
});

app.listen(8888);

かなり基本的なこと、私は知っています。これをテストするために、Chrome のコンソールから手動で XMLHttpRequest を作成します (クロスオリジン ポリシーを無効にして、ローカル マシンでテストしました)。

var xhr = new XMLHttpRequest();
xhr.open('POST', 'localhost:8888/hello', true);
xhr.send('name=me'); //body of request is irrelevant at this point

リクエストをローカル マシンに送信すると、すぐに返され、失敗したと表示されます。リモート サーバー ( localhostはサーバーの IP に置き換えられます) にリクエストを送信すると、コンソールにエラーは表示されませんが、xhr オブジェクトのステータスを確認すると失敗します。

サーバーの記述方法に問題があるのか​​、それともサーバーにリクエストを送信する方法に問題があるのか​​ わかりません。ただし、上記のような高速処理ポスト リクエストを示すチュートリアルと例、および上記のような POST リクエストの送信を示す他のチュートリアルを見てきました。

GET リクエストの送信と処理は正常に機能しているようです。私は何かが欠けているに違いない。

ありがとう、サーン。

4

2 に答える 2

2

POST を発行するときは、URL に HTTP を含める必要があります。

xhr.open('POST', 'http://localhost:8888/hello', true);
于 2012-08-22T20:38:10.370 に答える
1

呼び出し元の js が Web サーバーによって提供されていない場合、XHR は機能しません。

あなたがすべきことは、Expressサーバーに簡単なルートを追加することです

app.get('/', function( req, res) {
  res.sendfile('index.html');
})

index.html にはテスト コードが含まれています。

別の Web サーバーからテストを行い、迷惑な Cross-Origin ポリシーに直面する場合は、この非常に便利なコマンドを使用して、現在のフォルダーに Web サーバーを生成することもできます。

python -m SimpleHTTPServer

私はそれを頻繁に使用するので、実際にエイリアスを作成します。

alias www='python -m SimpleHTTPServer'
于 2012-08-22T19:45:04.813 に答える