2013-03-22 4 views
0

자바 스크립트의 업데이트 된 양식 유효성 검사 오류가 발생했습니다. 잘못된 데이터가 있으면 false로 경고합니다. 확인 된 PW가 암호와 같지 않으면 잘 작동합니다. 그러나 loginID 확인에 문제가있는 것 같으면 true789 false false123 false456 각각 경고합니다. 왜 그 결과는 false가 아니야? 123 false456 false789 false? json의 연기 때문에? 그것을 해결하는 방법?아래 코드에서

var result = "true"; 

$('#test').click(function(){ 
    validation(); 
    alert(result); 
}); 

function validation(){ 
    result = "true"; 
    var loginID = $("#loginID").val(); 
    var role = $("#role").text(); 

    // check Login Name 
    if (loginID == "" || loginID == null){ 
     $('#errorID').empty(); 
     $('#errorID').append(
      '<h6>' + "The Login Name cannot be empty" + '</h6>' 
     ); 
     $("#errorID").show(); 
     result="false"; 
    } else { 
     $.ajax({ 
      type: "GET", 
      dataType: "jsonp", 
      jsonpCallback: "jsoncallback", 
      data: { 
       ID: loginID, 
       role: role   
      }, 
      url: "http://mydomain.com/checkID.php?jsoncallback=?", 

      success: function(data){ 
       if (data[0].data.user_name!=""){  
        result="false"; 
        alert(result+"123"); 
        $('#errorID').empty(); 
        $('#errorID').append(
         '<h6>' + "The Login Name " + data[0].data.user_name + 
         " is used." + '</h6>' 
        ); 
        $("#errorID").show(); 
        alert(result+"456"); 
       } 
      }, 
      error: function(jqXHR, textStatus, errorThrown){ 
       alert("Request failed: " + textStatus + errorThrown); 
       result="false"; 
      } 
     }); //end of ajax 
    } 
    alert(result+"789");    
    return result; 
} // end of #validation 

답변

1

ajax 호출은 비동기 적으로 수행됩니다. ajax() 함수에 진입 한 후 계속 수행되고 결과가 결국 경고가되거나 이벤트 핸들러에서 무엇을 가지고 있더라도 트리거됩니다. ayax 호출에 async : false을 추가하면 사물의 동작 방식이 바뀝니다. 789 경고는 ajax 호출이 완료되고 응답 한 후에 만 ​​실행됩니다. 또한 ajax 호출이 도메인에 만들어진 경우 jsonpCallback이 필요하지 않으며 응답 헤더가 application/json 인 경우 dataType도 제거하고 jQuery에 그대로 두어 처리해야합니다.

관련 문제