2011-08-23 4 views
0

안녕하세요, 올바르게 완성 할 수없는 jquery POST 함수가 하나 있습니다.jquery 게시물의 결과를 확인하는 방법은 무엇입니까?

function submitlogin() { 
    var form = document.login; 
    var action = "chk_login"; 
    $.post("action.php", { 
     action: action, 
     user: form.user.value, 
     pass: form.pass.value 
    }, function(data) { 
     if (data=="loginok") 
      return true; 
     else 
      return false; 
    } 
    ); 
} 

내 로그인 양식을 제출하면 action.php에서 확인합니다. 사용자 함수 submitlogin은 사용자와 패스가 맞으면 TRUE를 반환하고 틀린 경우 FALSE를 반환해야합니다. 제 문제를 해결하도록 도와 줄 수 있습니까? 현재 내가 alert (data)를 action.php에서 텍스트를 출력 할 때 연결이 올바르도록 설정하면, 내 문제는 단지 POST 함수에서 TRUE 또는 FALSE 결과를 얻는 것입니다.

답변

2

ajax 요청의 콜백은 반환 값 걱정하지 :

$.post("action.php", 
    { 
     action: action, 
     user: form.user.value, 
     pass: form.pass.value 
    }, 
    function(data) 
    { 
     if(data=="loginok") 
      return true; 
     else 
      return false; 
    }); 

당신이 당신의 콜백에서 return true을 말할 때, 그 값을 검사 jQuery 라이브러리에서 아무 것도 없다. 버튼을 눌렀을 때 기본적으로 폼 유효성 검사를 수행하는 것처럼 보입니다. 이벤트 모델을 동기 호출과 혼동하는 것입니다. 모든 $.post

function submitlogin() 
{ 
    var form = document.login; var action = "chk_login"; 

    $.post("action.php", 
    { 
     action: action, 
     user: form.user.value, 
     pass: form.pass.value 
    }, 
    function(data) 
    { 
     if(data == "loginok") 
      $('#myForm').submit(); 
    }); 

    return false; 
} 
+0

예 실수로 알고 있습니다. 코드를 주셔서 감사합니다. 이제 완벽하게 작동합니다. – Svetoslav

0

먼저 함수가 대기하지 않도록 자연 asyn된다

당신이해야 할 일은
-> Call to submitLogin(); 
    -> Invokes jQuery POST Ajax Method 
    -> Immediately exits submitLogin 

-> When the POST request is complete, calls the callback 

, 아마이 같은 것입니다 :

은 무엇 일어나고있는 것은 이것이다 그것을 반환합니다. 두 번째로 잘못 된 게시자 처리기에서 true/false를 반환하려고합니다.

$ .ajax를 async false와 함께 사용해 볼 수 있습니다.

function submitlogin() { 
    var form = document.login; var action = "chk_login"; 
    var returnVal = false; 
     $.ajax({ 
      url: "action.php", 
      async: false 
      data: {action: action, user: form.user.value, pass: form.pass.value}, 
      success: function(data){ 
       returnVal = (data=="loginok"); 
      } 
     }); 

    return returnVal; 
} 
관련 문제