Heim  >  Artikel  >  Web-Frontend  >  So implementieren Sie die asynchrone Ajax-Einstellung, um zu überprüfen, ob der Benutzername vorhanden ist

So implementieren Sie die asynchrone Ajax-Einstellung, um zu überprüfen, ob der Benutzername vorhanden ist

亚连
亚连Original
2018-05-23 15:07:041392Durchsuche

Jetzt zeige ich Ihnen eine Implementierungsmethode zum Einrichten von Ajax Async, um zu überprüfen, ob der Benutzername vorhanden ist. Lassen Sie mich es jetzt mit Ihnen teilen und es allen als Referenz geben.

Wenn Sie einen neuen Benutzer hinzufügen, müssen Sie feststellen, ob die Mobiltelefonnummer vorhanden ist. Die ursprüngliche Idee ist, ein Onmouseout-Ereignis im Textfeld festzulegen. Dies wird im IE gut widergespiegelt, bei Google jedoch nicht. Sehr gut

ok, ändern Sie Ihre Meinung und überprüfen Sie es beim Absenden des Formulars:

//检验手机号码是否存在
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();
			}
			
		}
	}
}

Dann habe ich während dieses Prozesses etwas sehr Interessantes entdeckt: Als HiddenMobile „False“ zurückgab, wurde das Formular trotzdem gesendet

Ah, es ist so verwirrend, ich muss wieder mein Gehirn benutzen, FK

Ich dachte und dachte, dachte und dachte, suchte und suchte, und plötzlich dachte ich an async. Obwohl ich dieses Ding noch nie zuvor verwendet habe, habe ich wohl async:false hinzugefügt und werde es löschen, wenn ich es vorführe Wieder funktioniert es tatsächlich

cache:false,
async:false,

Okay, lasst uns das Problem lösen und es eingehend untersuchen: hm, es gibt wieder Vorteile, überzeugen Sie sich selbst

Der Standardeinstellungswert von async ist wahr. Diese Situation ist asynchron, was bedeutet, dass die Rezeption nach dem Senden der Anfrage auf die Rückkehr des Servers wartet Wird das Skript nach dem Ajax-Block weiter ausführen, und der Erfolg wird nicht ausgeführt, bis der Server das richtige Ergebnis zurückgibt. Das heißt, zu diesem Zeitpunkt werden zwei Threads ausgeführt, ein Thread, nachdem der Ajax-Block die Anforderung und das Skript gesendet hat nach dem Ajax-Block (dem anderen Thread)

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

Wenn im obigen Beispiel der Ajax-Block eine Anfrage stellt, bleibt er in Funktion1() und wartet Für die Rückkehr von der Serverseite führt die Rezeption jedoch gleichzeitig (in diesem Warteprozess) Funktion2 () aus, dh zu diesem Zeitpunkt werden zwei Threads angezeigt. Nennen wir sie Funktion1 () und Funktion2 () Hier.

Wenn asyn auf false gesetzt ist, wird die Ajax-Anfrage synchronisiert. Das heißt, nachdem der Ajax-Block zu diesem Zeitpunkt eine Anfrage gesendet hat, wartet er bei Funktion1() und führt Funktion2() nicht aus. bis der Teil function1() ausgeführt wird.

Hinweis

Synchronisierung bedeutet, dass beim Laden des JS-Codes in das aktuelle AJAX alle Codes auf der Seite nicht mehr geladen werden und die Seite nicht mehr geladen wird Der Status der angehaltenen Animation wird aufgehoben, wenn AJAX ausgeführt wird, und andere Codepages werden weiterhin ausgeführt.

Asynchron können andere Codes ausgeführt werden, während dieser AJAX-Code ausgeführt wird.

jquerys async:false, dieses Attribut

Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

Schnelle Lösung für die Ajax-Übermittlung von verstümmeltem Code unter IE

Eine Zusammenfassung von 5 Möglichkeiten, Caching zu lösen in Ajax

Ajax löst schnell das Problem zu langer Parameter, die nicht erfolgreich übermittelt werden können

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die asynchrone Ajax-Einstellung, um zu überprüfen, ob der Benutzername vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn