프로토 타입 버전 1.6.0.2 사용.예외를 삼키는 프로토 타입 콜백 함수
일반적으로 Ajax.Request
호출에 대한 응답을 처리하려고 할 때 콜백 함수에서 예외가 발생했을 때 예외가 삼키는 일반적인 문제가 있습니다.
HTML 마크 업 :
<input type="button" id="myButton" value="Press Me" />
자바 스크립트 : 다음은 간단한 예입니다
MYSITE = {};
document.observe("dom:loaded", function() {
// Set up our helper object
MYSITE.pageHelper = new MYSITE.PageHelper();
});
MYSITE.PageHelper = function() {
console.log("PageHelper called.");
$("myButton").observe("click", this.makeCall.bindAsEventListener(this));
};
MYSITE.PageHelper.prototype.makeCall = function() {
console.log("Make call.");
new Ajax.Request(
"remoteCall.cfm",
{
method: 'get',
parameters: "",
onComplete: this.handleCallback.bindAsEventListener(this)
});
};
MYSITE.PageHelper.prototype.handleCallback = function(resp) {
console.log("Start callback processing...");
var x = missingVar + "text"; // This line generates an exception...
console.log("Finished callback processing.");
};
좋아, 그럼 문제는 방화범이 끌려와 Firefox에서이 코드를 실행하면 예외가 출력되지 것입니다 문제의 라인 - 그것은 삼켰다. 꿀꺽 꿀꺽 마셔. 내가 (디버깅하는 경우) 이들을 잡으려고하는 유일한 방법은 try/catch에서 콜백 함수의 내용을 래핑하는 것입니다. 예 :
MYSITE.PageHelper.prototype.handleCallback = function(resp) {
try {
console.log("Start callback processing...");
var x = missingVar + "text"; // This line generates an exception...
console.log("Finished callback processing.");
} catch (e) {
console.log(e);
}
};
다른 누구도이 문제를 접하게 된 적이 있습니까? 저기있는 일들이 있니?
미리 감사드립니다. 오늘로
인용 한 코드는 AJAX 이벤트에서만 사용하는 것이고 질문에 대한 간단한 onClick 종류의 이벤트에는 적용되지 않는다고 생각합니다. –
이것은 '해결책'입니다! 위에서 설명한대로 Ajax.Responders -> onException 메소드를 구현해야한다. –
이것은 훌륭합니다. 모든 출처와 함께 멋지게 레이아웃 해 주셔서 감사합니다. – febs