2012-10-21 6 views
0

내 사이트에 암호 변경 기능이 있으며 성공 또는 실패 메시지를 표시하려는 경우를 제외하고는 모든 것이 지금 완료되었습니다. 성공적인 내가 성공을 읽는 경고 상자를 얻고 때
AJAX 완료 응답

$('#change_Pass').submit(function() { 
    if(pass_val.form()) { 
     $.ajax({ 
      type: "POST", 
      url: "script.php", 
      complete: function(data) { 
       $('#response_field_pass').show(); 
       $('#response_field_pass >p').text(data); 
       if(data) alert("success"); 
       else alert("fail"); 
      } 
     }); 
    } 
    return false; 
}); 

는 PHP 스크립트 그렇게 true 또는 false을 메아리 :

<form id="change_Pass" action="" method="post"> 
    //stuff 
</form> 
<fieldset id="response_field_pass" style="display:none;"><p style="color:black;"></p></fieldset> 

그리고 내 JQuery와 : 그래서 여기 내 HTML입니다. 어느 쪽이 위대한가. 그러나 필드 세트가 보이지 않고 어느 쪽도 텍스트가 <p> 안에 있어야합니다.

$('#response_field_pass').show(); 
$('#response_field_pass >p').text(data); 

을 그리고 경고로 이동합니다 : 그것은 본질적으로 건너 뜁니다. 왜 그것이 fieldset을 숨기고 있지 않다는 아이디어?

답변

1

내가 언급 한 행을 건너 뛰면 의심 스럽습니다. 대부분 complete 처리기의 첫 번째 인수는 jqXHR 개체이고 서버에서받은 데이터가 아니기 때문에 대부분 필드 세트의 단락에는 아무 것도 표시되지 않습니다.

$.ajax({ 
    type: "POST", 
    url: "script.php", 
    success: function(data) { 
     // ... 
    } 
}); 

success 함수의 첫 번째 인수는 서버에서 반환 data이다 : 나는 좋을 것 문제를 해결하기 위해 대신 success 핸들러를 사용합니다.

가능한 요청 오류를 처리하려면 error 처리기를 사용할 수 있습니다. 세 개의 인수를 수신합니다. jqXHR 오브젝트, 발생한 오류 유형을 설명하는 문자열 및 선택적 예외 오브젝트 (발생한 경우).

+0

그래도 괜찮습니까? 실패하면 어떻게 될까요? 난 그냥 아약스가 완료된 후 스크립트에서 응답을 표시 싶습니다. –

+0

@JohnBernal 요청이 실패하면'error' 콜백을 처리해야합니다. 그렇지 않으면 성공적인 데이터 전송의 경우에만 데이터가 전달되기 때문에 서버에서 데이터를 가져 오려면'success' 핸들러를 사용해야합니다. – VisioN

+0

이제 [this] (http://pastie.org/5095564)가 있지만 필드 세트는 여전히 표시되지 않지만 경고 메시지는 표시됩니다. 쇼가 왜 발사되지 않는지 아는 어떤 아이디어? –