0

これは私を狂気の瀬戸際に追いやった。基本的にjqueryを介して作成され、投稿を介して送信される動的フォームがあります。

//post_form
document.body.appendChild(form);
form.submit();

しかし、私はこのスクリプトを次のように呼び出していました:

post_form(url,params);
window.location = "/myurl";

post_form() 呼び出しの後に window.location を置くと、ポスト リクエストが送信されず、デバッグ中にコードが実行されていることがわかりました...何が起こっているのか理由を教えてください。ありがとう!

4

2 に答える 2

3

コードが実行され、フォームがドキュメント本文に追加され、その送信が開始されますが、ページからリダイレクトした瞬間に、ページはフォームと共に破棄され、進行中の送信が中止されます。質問にタグを付けましjQueryたが、サンプル コードで実際の jQuery を使用していません —.serialize()フォームを使用して送信するjQuery.post()jQuery.ajax()、成功のコールバックが jQuery によって呼び出された後にのみリダイレクトする必要があります。

于 2012-10-23T14:08:39.243 に答える
2

フォームを送信している場合と同じで、すぐに別のリンクをクリックします。ブラウザは「メイン」リクエストを 1 つしか実行できません。POST リクエストを送信し、応答で受け取った内容でビューを更新するか、GET リクエストを送信して、応答で受け取った内容でビューを更新します。スクリプトは非常に短い間隔で両方を実行するため、最初の POST 要求はキャンセルされます。どちらのアクションも「別のページに移動する」アクションであり、両方を同時に実行することはできません。

AJAX POST リクエストを実行し、終了時に Javascript 経由でリダイレクトするか、POST リクエストに応答して HTTP ヘッダー経由でリダイレクトします。

于 2012-10-23T14:08:50.257 に答える