ホームページ  >  記事  >  バックエンド開発  >  ajax はユーザー名が存在するかどうかを確認するために async を設定します

ajax はユーザー名が存在するかどうかを確認するために async を設定します

小云云
小云云オリジナル
2018-01-12 14:42:351290ブラウズ

新しいユーザーを追加するときは、携帯電話番号が存在するかどうかを確認する必要があります。最初のアイデアは、テキストボックスに onmouseout イベントを設定するという非常にシンプルな方法ですが、Google ではあまり適切ではありません。この記事では主に、ユーザー名が存在するかどうかを確認するために Ajax async を設定する実装方法を紹介します。編集者はこれが非常に良いものだと思ったので、皆さんの参考として今から共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

OK、フォームを送信するときに考えを変えて確認してください:


//检验手机号码是否存在
function checkRepeat(){
	var id = '${item.id}';
	var mobile = $("#mobile").val();
	//alert(id);
	if(id==null||id==''){
		$.ajax({
			url: '/admin/adminuser/ajaxCheckReapet.shtml?mobile='+mobile,
			type: 'GET',
			dataType: 'text',
			cache:false, 
		  async:false, 
			timeout: 5000,
			error: function(){alert('数据获取失败!');},
			success: function(msg){
				if("1"==msg){
					$("#spMobile").attr("style","display:block;color:red;");
					$("#hiddenMobile").attr("value","true");
				}else{
					$("#spMobile").attr("style","display:none;");
					$("#hiddenMobile").attr("value","false");
				}
				
			}
		});
		
	}
	return true;
}


function save(){
	if(checkSImg()&&checkRepeat()){
		var hiddenMobile = $("#hiddenMobile").val();
		//alert(hiddenMobile);
		if(hiddenMobile=='false'){
			if($("#form1").form("validate")){
				$("#form1").submit();
			}
			
		}
	}
}

そして、そのプロセスで非常に興味深いことを発見しました: hiddenMobile が false を返しても、フォームはまだ送信されています

ああ、混乱しています、また頭を使わなければなりません、FK

考えて考えて、考えて考えて、検索して検索して、突然 async のことを思い出しました。これまで一度も使用したことがありませんでしたが、async を追加しました。 : false、それを消去して、もう一度デモしてみたところ、実際に動作しました

cache:false,
async:false,

さて、問題を解決して詳しく調べてみましょう: ふむふむ、あなた。見てください、async のデフォルト設定値は true です。つまり、ajax がリクエストを送信すると、サーバーが戻るのを待ちます。サーバーが正しい結果を返した場合にのみ成功が実行されるまで、ajax ブロックの背後でスクリプトを実行し続けます。つまり、この時点では 2 つのスレッドが実行され、1 つのスレッドは ajax ブロックがリクエストを送信した後に実行され、スクリプトは ajax ブロックの送信後に実行されます。 block (別のスレッド)

$.ajax({ 
     type:"POST", 
     url:"Venue.aspx?act=init", 
      dataType:"html", 
     success:function(result){  //function1()
       f1(); 
       f2(); 
    } 
     failure:function (result) { 
      alert('Failed'); 
     }, 
 } 
 function2();

上記の例では、ajax ブロックがリクエストを送信すると、function1() に留まり、サーバーからの戻りを待ちますが、同時に (この待機プロセス中) )、フロントデスクは function2() を実行します。つまり、この時点で 2 つのスレッドが表示されます。ここではそれを function1() と function2() と呼びます。

asyn が false に設定されている場合、ajax リクエストは同期です。つまり、この時点で ajax ブロックはリクエストを送信した後、function1() で待機し、function2() を実行しません。 ()部分が実行されます。

同期とは、JS コードが現在の AJAX にロードされるときに、ページ内のすべてのコードのロードが停止し、AJAX が完了するとページの一時停止されたアニメーションが解除されることを意味します。コード ページは引き続き実行され、アニメーションの一時停止状態は解除されます。

この AJAX コードの実行中に、他のコードを非同期的に実行できます。

jqueryのasync:false、この属性

関連する推奨事項:


jQueryのajax属性asyncの詳細な例

スクリプトタグでのasyncとdeferの使用法

asyncの使用法の詳細な説明JavaScript で

以上がajax はユーザー名が存在するかどうかを確認するために async を設定しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。