0

jQuery経由で投稿した後、指定したページにリダイレクトしようとしています。これが私のPOSTコードです:

$.post("/addcompany", {
name: $('#company_name').val(),
phone: $('#company_phone').val(),
email: $('#company_email').val(),
suppliers: JSON.stringify(suppliers),
}, function(){
    alert('after post'); 
    window.location.href = '/companies';
    }
);

これは、NodeJS での私のバックエンド コードです。

app.post('/addcompany',function(req,res){
db.collection("companies",function(err,collection){
    collection.insert( {
        "name":req.body.name,
        "email":req.body.email,
        "phone":req.body.phone,
        "suppliers" : JSON.parse(req.body.suppliers)
    });
});
res.redirect('/companies');
});

問題は、jQuery スクリプトと NodeJS バックエンド コードの両方で「/companys」にリダイレクトしないと、リダイレクトが機能しないことです。リダイレクト コードはどこに配置すればよいですか? サーバーとクライアントの両方に2回配置する必要があるのは正常ですか? ありがとう!

4

2 に答える 2

5

この状況では、フロントエンドでのみリダイレクトする必要があります。それを適切に達成するには、バックエンドにある必要があると思いますres.send()(サーバー側ですべてが正常に行われたことをクライアントに知らせるために、空の 200 応答)。

サーバー側でリダイレクトしたい場合は、Ajax を使用しないでください。単に古いポスト リクエストを使用してください。

于 2012-06-11T09:48:10.293 に答える
3

AJAX 要求に応答してリダイレクト コードを送信しても、ブラウザは自動的に何もしません。クライアント側の応答ハンドラーは、結果コードを見て、見た場合はリダイレクト自体を実行する必要があります。クライアント側のコードで固定 URL に自動的に変更するのではなく、実際にはそれを行うことをお勧めしwindow.location.hrefます。これは、サーバー側のコードが最終的にエラー状況下で異なる応答をする必要がある可能性があるためです (クライアント側のコードが軽々しくするのは良い考えではありません)。サーバーへのリクエストですべてがうまくいったと仮定します)。

于 2012-06-11T11:14:11.727 に答える