使用原型1.6.0.2版。原型回調函數吞嚥異常
我有一個常見的問題,當它們被拋出回調函數時,通常當我嘗試處理對Ajax.Request
調用的響應時,異常被吞噬。下面是一個簡單的例子:
HTML標記:
<input type="button" id="myButton" value="Press Me" />
的Javascript:
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.");
};
OK,所以問題是,如果你使用Firebug運行在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事件種類。 – 2010-12-11 19:14:22
這是'''解決方案!您應該實現Ajax.Responders - > onException方法,如上所示。 – 2011-03-03 13:48:03
這是非常好的,謝謝你與所有來源很好地鋪設 – febs 2012-08-16 14:16:03