먼저 간단한 js를 살펴보겠습니다.
jquery ajax 반환 값에 대한 코드
function getReturnAjax{
$.ajax({
type:"POST",
http://www.jb51.net/userexist.aspx",
data: "username= " vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"
이 사용자 이름은",false)
true를 반환합니다.
}
else
{
showtipex(vusername.id,"
사용자가 등록된 ",false);
vusername.className="bigwrong";
false 반환;
}
}
});
}
그러나 getReturnAjax()를 호출하면 모든 결과가 false라는 것을 알 수 있습니다. 이는 true를 반환하고 false를 반환해도 전혀 효과가 없다는 것을 의미합니다. Firefox에서 Firebug를 사용하여 디버깅하는 것도 코드가 증명되었습니다. 전혀 작동하지 않습니다.
함수에서 변수를 정의한 후 이를 ajax에서 할당하고 마지막에 함수를 반환하는 것을 상상해 봅시다. 코드를 다음과 같이 수정해 보겠습니다.
function getAjaxReturn()
{
var bol=false;
$.ajax({
type:"POST",
http://www.jb51.net/userexist. aspx",
data:"username= " vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"< ;img src='images/ok.gif' />
이 사용자 이름은",false를 사용할 수 있습니다)
/ / return true;
bol= true;
else
{
showtipex(vusername.id,"
< b>
사용자가 등록되었습니다",false);
vusername.className="bigwrong";
//return false ;
}
}
});
return bol
}
결과가 여전히 작동하지 않습니다. 최종 해결 방법은 다음과 같습니다.
1. async:false를 추가합니다. 즉, 동기화로 변경된다는 의미입니다. (동료의 설명에 따르면 다음 js는 ajax가 반환 값을 가질 때까지 실행되지 않습니다. 이는 과거에 많은 ajax 호출의 할당이 작동하지 않았던 것이 당연하다는 것을 분명히 합니다). 이런 식으로 ajax가 bol에 값을 할당한 후 다음 js 부분이 실행됩니다. 지금 비동기식이었다면 값이 할당되기 전에 반환되었을 것입니다.
function getAjaxReturn ()
{
var bol=false;
$.ajax({
type:"POST",
async:false,
http://www. jb51.net /userexist.aspx",
data:"username=" vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex( vusername.id ,"
이 사용자 이름은를 사용할 수 있습니다.", false )
// return true
bol=true
}
else
{
showtipex(vusername.id,"
사용자가 등록되었습니다",false);
vusername.className="bigwrong";
//return false;
}
});
return bol;
}
2. .