ホームページ  >  記事  >  ウェブフロントエンド  >  onsubmit が form_jquery を検証するときに ajax の return false を使用することによる無効な問題の簡単な分析

onsubmit が form_jquery を検証するときに ajax の return false を使用することによる無効な問題の簡単な分析

WBOY
WBOYオリジナル
2016-05-16 17:29:21944ブラウズ
コードをコピー コードは次のとおりです:

/**
* フォーム送信の確認
**/
関数onSubmit() {
if($('#name').val().length<2){
alert("名前は漢字 2 文字以上である必要があります");
return false ;
}
var t = new Date().getTime();
$.ajax({
type: "POST",
url: "/users/checkrepeat/",
データ: "name=" $('#name').val() "&time=" t,
success:function(res){
if(res == 'exists'){
alert(" 名前はすでに存在します。変更してください。");
; 理由:


1. ajax 中に false を返す関数は、onsubmit() と同じ関数ではありません。 ;
2. ajax が実行されるとき、async のデフォルト設定値は true です。この場合、非同期モードは、ajax がリクエストを送信した後、サーバーが戻るのを待ちながら、フロントデスクが実行を継続することを意味します。 ajax ブロックの背後にあるスクリプトは、サーバーが正しい結果を返すまで実行されません。つまり、この時点で 2 つのスレッド (ajax ブロックがリクエストを行った後に 1 つのスレッドが実行され、ajax ブロックの後にスクリプトが実行されます) が実行されます。 (別のスレッド)。

変更コード:

コードをコピー

コードは次のとおりです:
/** * フォーム送信の確認 **/function onSubmit(){ if($('#name').val().length<2){alert("名前は2つ以上の漢字 "); {
タイプ:" post "、
async:false、//同期メソッドを設定:false、
url:"/ users/checkrepeat/",
データ: "name= " $('#name').val() "&time=" t,
success:function(res){
if(res == 'exists'){
alert("名前はすでに存在します。変更してください。");
FLAG = FALSE;
}
}); 🎜> false を返します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。