>  기사  >  웹 프론트엔드  >  jquery ajax 반환에 반환 값이 없습니다.

jquery ajax 반환에 반환 값이 없습니다.

WBOY
WBOY원래의
2016-05-16 18:00:441385검색

먼저 jquery ajax 반환 값의 간단한 js를 살펴보겠습니다.

코드 복사 코드는 다음과 같습니다.

함수 getReturnAjax{
$.ajax({
type:"POST",
url:"ajax/userexist.aspx",
data:"username=" vusername.value,
성공:함수(msg){
if(msg=="ok"){
showtipex(vusername.id,"이 사용자 이름은",false)
true를 반환할 수 있습니다.
}
else
{
showtipex (vusername.id,"사용자가 등록되었습니다
vusername.className="bigwrong";
return false;
}
}
});
}

그러나 이 getReturnAjax()를 호출하면 우리가 항상 얻는 것은 false라는 것을 알게 됩니다. 즉, true를 반환하고 false를 반환하면 전혀 효과가 없다는 것을 알게 됩니다. 반환 부분은 전혀.




코드 복사
코드는 다음과 같습니다. function getAjaxReturn() {
var bol=false;
$.ajax({
유형:"POST",
url:"ajax/userexist.aspx",
data:"username="vusername. 값,
성공:함수(msg){
if(msg=="ok"){
showtipex(vusername.id," < ;font color='#ffff00'>이 사용자 이름은",false)
// return true;
bol=true;
를 사용할 수 있습니다. }
else
{
showtipex(vusername.id,"The 사용자가 등록",false);
vusername.className="bigwrong";
//return false;
}
}
}) ;
return bol;
}


결과가 여전히 작동하지 않습니다. 최종 해결 방법은 다음과 같습니다.

1. async:false를 추가하면 동기화로 변경된다는 의미입니다. (동료의 설명에 따르면 다음 js는 ajax가 반환 값을 가질 때까지 실행되지 않습니다. 이는 과거에 많은 ajax 호출의 할당이 작동하지 않았던 것이 당연하다는 것을 분명히 합니다). 이런 식으로 ajax가 bol에 값을 할당한 후 다음 js 부분이 실행됩니다. 지금 비동기식이었다면 값이 할당되기 전에 반환되었을 것입니다.





코드 복사
코드는 다음과 같습니다. function getAjaxReturn() {
var bol=false;
$.ajax({
유형:"POST",
async:false,
url:"ajax/userexist.aspx",
데이터:" 사용자 이름=" vusername.value,
성공:기능(msg){
if(msg=="ok"){
showtipex(vusername.id,"이 사용자 이름은",false)
// true를 반환할 수 있습니다.
bol=true;
}
else
{
showtipex(vusername.id,"<글꼴 색상 = '#ffff00'>사용자가 등록되었습니다",false);
vusername.className="bigwrong";
//return false;
}
}
});
return bol
}


2.



코드 복사
코드는 다음과 같습니다.

function getAjaxReturn(success_function,fail_function)
{
var bol=false;
$.ajax({
type:"POST",
url:"ajax/ userexist.aspx",
data:"username=" vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id, "이 사용자 이름은",false를 사용할 수 있습니다.
success_function(msg);
}
else
{
showtipex(vusername.id,"< ;font color='#ffff00'>사용자가 등록되었습니다",false);
vusername.className="bigwrong";
fail_function(msg);
/ /return false;
}
});
function Success_function(info)
{
//원하는 대로 수행
alert(info) ; >}
funciont failure_function(info)
{
//원하는 대로 수행
alert(info)
}


주문형 플랜 선택 당신이 필요합니다. 일반적으로 대규모 웹사이트에서는 성공 및 실패 시 페이지 프롬프트를 처리하기 위해 함수를 전달하는 두 번째 방법을 사용합니다.


//async:false를 추가하세요. 동기화하려면
//ajax가 bol에 값 할당을 완료할 때까지 기다린 후 다음 js 부분을 실행합니다. 비동기식인 경우 값을 할당할 시간이 되기 전에 반환됩니다.
function vcodeYes() {
var bol = false;
$.ajax(
{
type: "GET",
url: "../Ajax/ValidationCode.ashx ",
데이터: { txtVcode: $('#<%=txtVcode.ClientID%>').val() },
async: false,
성공: 함수(데이터) {
if (data == "0") {
$.dialog({ icon: '경고', follow: document.getElementById('txtVcode'), content: '인증 코드 오류!' }).time( 1);
changeCaptchaImage('imgVerify2', 'txtVcode');
}
else {
bol = true; return bol
}
//검증에 실패하면 false를 반환하고, 그렇지 않으면 다음 함수를 실행합니다.
$('.getVodes').click(function () {
if (vcodeYes() ) {
);
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.