0
  • Node.js(エクスプレス)Webサーバー
  • Webサーバーのリクエストハンドラ
app.get('/documents/ajax/:id.:format?', function(req, res) {
   console.log ('Request Received');
   var body = 'hello world';
   res.writeHead(200, {
    'Content-Length': body.length,
    'Content-Type': 'text/plain'
   });

})
  • クライアント側のJavaScriptからのajaxリクエスト
  $.ajax({
    url : "/documents/ajax/" + item,
    success : function(msg) {
      alert ("success" + msg);
    },
    error : function(request, status, error) {
      alert("Error, returned: " + request);
      alert("Error, returned: " + status);
      alert("Error, returned: " + error);

    }
  });
  • サーバー側でリクエストを受信でき、4つのリクエストを送信します

しかし、私の成功イベントはクライアント側のJSで呼び出されていません。また、Webサーバーを停止すると、エラーハンドラーが呼び出されるのがわかります。

助けてください。

4

2 に答える 2

1

主な問題は、応答を終了しないため、サーバーが実際にクライアントに何も送信しないことです。サーバーは、ファイル、リダイレクト、テキストなどで応答する必要があります。コールバックを、、、、、で終了する必要があります...res.endドキュメントを参照しください。res.sendres.sendfileres.redirectres.render

さらに、expressを使用res.setして、httpヘッダーを設定します。

app.get('/documents/ajax/:id.:format?', function(req, res) {
   console.log ('Request Received');
   var body = 'hello world';
   res.set({'Content-Type': 'text/plain'});
   res.send(body);
});

200はデフォルトの応答コードであるため、これを指定する必要はなく、長さが自動的に計算されます。これらのことは、多くの場合、コマンドラインから次の方法でデバッグする方が簡単ですcurl

curl http://localhost:3000/documents/ajax/1

curl -I http://localhost:3000/documents/ajax/1
于 2013-02-10T22:08:52.027 に答える
1

サーバーリクエストハンドラーでres.endする必要がありました。その後、クライアント側のJSで成功イベントを生成することができました

于 2013-02-11T00:10:52.110 に答える