2013-07-15 2 views
0

자바 스크립트 기능에 문제가 있습니다. 나는 jquery ajax를 사용하여 입력 한 사용자 이름이 다른 사용자가 사용했는지 (데이터베이스 확인을 통해) 사용되었는지 확인하는 등록 양식을 가지고 있습니다. 제출 버튼을 누른 후 "validateMyForm()"- 내 javascript function-이 호출되어 입력을 검증합니다. 내 jquery 아약스도 포함되어 있습니다 (내 코드를 볼 수 있습니다). "validateMyForm()"함수의 반환 값이 true이면 폼이 게시됩니다 (일반적인 방법으로 아약스 방식으로). 입력 한 사용자 이름이 어느 것과도 일치하지 않으면 내 양식을 게시하고 다른 사용자가 사용자 이름을 사용하면 게시하고 싶지 않습니다. 하지만 제출 버튼을 누르면 함수는 "$. post"섹션을 건너 뛰고 항상 true를 반환합니다. 도와 주시겠습니까?jquery ajax in PHP 레지스터 양식

<form method="post" action="signup.php" önsubmit="return validateMyForm();" id="formtag"> 
    <input id="username" name="username" class="input-text" type="text"/> 
    <input type="submit" name="submit1" id="register" value="Register" /> 
</form> 

그리고 내 자바 스크립트 함수는 다음과 같습니다 :

내 PHP 코드는 비동기 호출을하기 때문에

function validateMyForm() { 
    var returnedVal = true; 
    //get username input text 
    . 
    . 
    . 
    $.post('ajax/checkUsername.php',{ username:username },function(data){ 
      //Checking that entered username is used by another person or no 
      . 
      . 
      . 
      if(is used by another) 
       returnedVal= false; 
      else 
       ShowError; 

    }, "json"); 

    return returnedVal; 

}

답변

2

이입니다. 그래서 서버가 post-request에 대한 응답을 보내기 전에 true이 반환됩니다.

콜백 기능을 사용하거나 통화 종료 후 응답을 표시해야합니다.

$("form").submit(function(event) { 
    //validate your form here 
    ... 
    $.post("/ajax/checkUsername.php", {username: username}, function(data) { 
     //check returned value and show response to the user 
     ... 
    }); 
    event.preventDefault(); 
    return false; 
} 
+0

마찬가지로 Tobiass는 반환을 기다려야한다고했습니다. 내가 뭘 할 것이라고 입력 버튼 (제출하지 않음)를 통해 기능을 호출하고 그때 내가 사실을 반환하는 경우 자바 스크립트를 사용하여 양식을 제출합니다. – Banning

+0

제공되는 코드를 $ (document) .ready (function() { –

+0

원한다면 예를 들어 Ajax 요청을 처리하는 방법에 대한 예입니다. –