0

現在、node.js、express、および jade をいじっていますが、jQuery POST を使用するとリダイレクトされない理由がわかりません。私は周りを読んで、これは既知のバグのようですが、とにかくそれを理解することはできません. 参照用の私のコードは次のとおりです。

バックエンド コード:

app.get('/ace', function (req, res) {
  res.render('ace', {test: 4});
});

app.post('/ace', function (req, res) {
  var input = req.body.submittedInput;
  console.log(input);
  res.redirect('/');
});

フロントエンド (翡翠)

script
var editor = ace.edit("editor");
var session = editor.getSession();
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/javascript");
$.noConflict();
jQuery(document).ready(function($) {
 // Use jQuery in here
  $("#submitButton").click(function() {
  $.post("/ace", 
  { "submittedInput": session.getLines(0, session.getLength()-1)},
    "json");
  });
 });
button(type='button', id="submitButton")
 | SUBMIT

ここにコンソール出力があります

[ '//Begin Typing Code here', '4' ]
POST /ace 302 5ms - 35
GET / 200 59ms - 12.54kb
4

1 に答える 1

1

これは、あなたが書いたコードが正確にどのように機能するかを誤解しているようです:

$.post(
  "/ace",
  { "submittedInput": session.getLines(0, session.getLength()-1)},
  "json"
);

これにより に POST リクエストが送信/aceされますが、リダイレクトはこの特定のリクエストにのみ影響し、ブラウザ セッション全体には影響しません。これで、リダイレクト行を削除し、代わりに最初のリクエストが完了した後に2 番目の$.postリクエストを行った場合と基本的に同じになります。/

ブラウザ自体をリダイレクトする場合は、redirect行を削除し、代わりにターゲット URI などを含む JSON を送り返す必要があります。次に、jQuery コードがそのコードを読み取り、ページ自体をリダイレクトします。

于 2013-04-11T04:19:35.673 に答える