2013-06-02 2 views
1

글로벌 오류를 기반으로 제출할 방지시키는 :는 HTML에서 JQuery와

<form action="next.html"> 
    <!-- tags here --> 
    <button id="prev">Prev</button> 
    <button id="next">Next</button> 
</form> 

자바 스크립트 : 나는 예를 here에 따라 코드를 구문 분석 $(document).ajaxError에 글로벌 ErrorHandler를 첨부했습니다

$("form").submit (function(e) { 
    e.preventDefault(); 
    if (e.originalEvent.explicitOriginalTarget.id == "next") { 
     doPostData(); 
     // window.location = "next.html"; 
    } 
    else if (e.originalEvent.explicitOriginalTarget.id == "prev") { 
     window.location = "prev.html"; 
    } 
} 

doPostData()은 기본적으로 서버에 POST 요청을 보냅니다. 이 작업이 성공적으로 완료되면 모든 것이 정상이지만 오류가 발생하면 양식을 제출하지 못하게하는 방법을 모릅니다. 오류가 깜박이고 브라우저가 '다음'페이지로 리디렉션됩니다.

어떻게하면이를 우아하게 해결할 수 있습니까?

+0

제출하기 전에 개발자 콘솔에 오류가 표시되는지 확인해 보셨습니까? – Bemmu

+0

Firebug를 사용하여 코드를 단계별 실행하면 서버에서 '잘못된 요청'응답을 볼 수 있습니다 (올바른). – hepabolu

+0

업데이트 : 이전과 현재의 차이점은 확실하지 않지만 적어도 이제는 오류 처리기가 실행되고 동일한 페이지에 머물러 있습니다. 남아있는 것은 오류 처리기가 작동했는지 파악하여 적절한 조치를 취할 수있는 방법입니다. – hepabolu

답변

0

은 그냥 후손을 위해, 나는 마지막으로 잘못 알아 냈어 :

오류 처리기가 제대로 발사하지만 여전히 window.location = "next.html" 사용할 수 있었기 때문에 다음 페이지로 리디렉션은 여전히 ​​일어났다. 위의 코드에서 window.location 행의 주석을 제거하는 것과 유사합니다.

그래서 기본 설정은, 고려 위의 코드 만 (하지 크롬이나 사파리에서) 파이어 폭스에서 작동 :

$(document).ajaxError(genericAjaxErrorHandler); 

$("#prev").click(function() { 
    window.location = "prev.html"; 
}); 

$("#next").click(function() { 
    doPostData(); 
}); 

function doPostData() { 
    // actions here 

    if (allIsOk) { 
     window.location = 'next.html'; 
    } 
} 

내가 추가 된

$('form').submit(function(e) { 
    e.preventDefault(); 
}); 

확인 할 수 있지만, 필요하지 않을 수도 있습니다.