2012-10-06 5 views
-1

jquery/bootstrap 양식이 있습니다. 전자 메일 주소가 이미 사용중인 경우 PHP가 데이터베이스를 검사합니다.Ajax/Jquery를 통해 양식 PHP 메시지 출력

이메일 주소가 사용 중이면 다음이 호출되지만 새 창으로 전송됩니다.

echo'<p class="error">An account already exists for this email address. Please use a different email address</p>';

이 모든 것은 정상적으로 작동하지만 오류 메시지가 Jquery 폼에 표시되기를 원합니다. 나는이 일을하는 방법에 대해 머리를 감싸고있는 것처럼 보일 수 없다.

이 핸들러를 사용해야한다는 것을 알고 있지만 어디에서 오류 메시지를 넣을 것인지 또는이 코드가 PHP에서 읽는 오류 메시지를 어떻게 알 수 있는지 알 수 없습니다. 또한, 나는 옆에 success 속성에 수행 할 수있는 오류 메시지를 처리 ​​형태

$(document).ready(function() { 
    $('#form').submit(function() { 
     $.ajax({ 
      type: 'POST', 
      url: "process.php", 
      data: dataString, 
      success: function() { 
      } 
     }) 
     return false; 
    }); 
}); 

답변

0

의 이메일 필드에 표시하는 오류 메시지를 부탁합니다. 함수는 data 인수 (process.php의 응답)를 받아 들일 수 있습니다.

success: function(data){ 
    //does data contain p.error? 
    //get the contents of p.error, display it on the current page 

    //for example: 
    if($(data).find("p.error.name").length){ 
     //process name error here 
     nameError = $(data).find("p.error.name").text(); 
     console.log(nameError); 
    } 
    if($(data).find("p.error.email").length){ 
     //process email error here 
     emailError = $(data).find("p.error.email").text(); 
     console.log(emailError); 
    } 
} 

위에서 정의 된 성공 기능은 process.php 이런 식으로 뭔가 보이는 가정

<div> 
<p class="error name">Please enter a name.</p> 
<p class="error email">Your email address is invalid.</p> 

<!-- some other stuff here --> 
</div> 
+0

내가 볼을, 그래서 "성공"그것이 "성공"제출 아니더라도, 인쇄 process.php 아무것도 인쇄됩니다 ? 나는 여기서 의미론에 혼란스러워하고 있다고 생각한다. 메시지를 어떻게 구분합니까? 전자 메일과 다른 사람의 이름을 원한다고 가정 해보십시오. 함수는 process.php에서 어떤 함수가 호출되었는지 어떻게 알 수 있습니까? – frankie

+1

올바른지 - ajax 호출의 success 속성은 서버의 성공적인 응답을위한 것입니다. 양식이 성공적으로 제출되었음을 나타내지는 않습니다 (유효성 검사 등). 아마도'process.php'를 수정하여'p.error'가'data-'속성 또는 오류 유형을 나타내는 추가 클래스를 포함 할 수 있습니다. 이 경우, 성공 콜백은'p.error.name' 또는'p.error.email'을 찾는다. – Tuanderful