사용자 이름이 존재하는지 확인하기 위해 ajax 설정 async를 구현하는 방법

亚连
풀어 주다: 2018-05-23 15:07:04
원래의
1423명이 탐색했습니다.

이제 사용자 이름이 존재하는지 확인하기 위해 ajax async를 설정하는 구현 방법을 알려 드리겠습니다. 이제 그것을 여러분과 공유하고 모든 사람에게 참고 자료로 제공하겠습니다.

새 사용자를 추가할 때 휴대폰 번호가 존재하는지 확인해야 합니다. 초기 아이디어는 텍스트 상자에 onmouseout 이벤트를 설정하는 것이 매우 간단하지만 IE에서는 잘 작동하지 않습니다.

좋아, 마음을 바꿔서 양식을 제출할 때 확인하세요.

//检验手机号码是否存在
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를 반환해도 양식은 여전히 ​​제출됩니다

Ah , 혼란스러워 뇌를 다시 사용해야합니다 FK

생각하고 생각하고 생각하고 찾고 검색하고 갑자기 async가 생각났습니다. 이전에 이것을 사용한 적이 없지만 방금 async를 추가했습니다. . :false를 지웠고 다시 시연해 보니 실제로 작동했습니다.

cache:false,
async:false,

자, 문제를 해결하고 자세히 살펴보겠습니다. 또 얻은 게 있으니 직접 확인해보세요

async의 기본 설정 값은 true입니다. 즉, ajax가 서버가 반환되기를 기다리는 동안 요청을 보내는 경우입니다. 프런트 데스크는 서버가 성공할 때까지 ajax 블록 뒤에 있는 스크립트를 계속 실행합니다. 이는 끝이 올바른 결과를 반환할 때만 실행됩니다. 즉, 이 시점에서 두 개의 스레드가 실행되고, ajax 블록이 요청을 보낸 후 하나의 스레드가 요청을 보낸다는 의미입니다. 위의 ajax 블록 뒤에 있는 스크립트(다른 스레드)

$.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(), 즉 현재 두 개의 스레드를 실행합니다. 여기서는 function1() 및 function2()라고 부르겠습니다.

asyn을 false로 설정하면 ajax 요청이 동기식입니다. 즉, 이때 ajax 블록이 요청을 보낸 후 function1()에서 대기하고 function2()를 실행하지 않습니다. () 부분이 실행됩니다.

Note

동기화는 JS 코드가 현재 AJAX에 로드되면 페이지의 모든 코드가 로드를 중지하고 AJAX가 완료되면 페이지가 일시 중지된 애니메이션에서 벗어나는 것을 의미합니다. 코드 페이지는 계속 실행됩니다. 일시 중단된 애니메이션 상태가 해제됩니다.

이 AJAX 코드가 실행되는 동안 다른 코드를 비동기적으로 실행할 수 있습니다.

jquery의 async:false, 이 속성

위 내용은 제가 모두를 위해 정리한 내용입니다. 앞으로 모든 분들께 도움이 되기를 바랍니다.

관련 기사:

IE

캐시를 해결하는 5가지 방법에 대한 Ajax 요약

ajax는 너무 길어서 처리할 수 없는 매개변수 문제를 신속하게 해결합니다. 성공적으로 제출되었습니다

위 내용은 사용자 이름이 존재하는지 확인하기 위해 ajax 설정 async를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿