我在一个工作正常的JS文件中使用了javascript代码(使用XHR / AJAX)。当我将它拆分为requirejs应用程序中的单独模块时,我似乎无法处理事件对象&它显示为未定义(在Firefox 29.0.1中测试)。
致电模块:
ajax.onreadystatechange = new ajaxResponse().handleAjaxResponse(e);
ajaxResponse
define(["require", './url/urlCommon'], function(require, urlCommon) {
'use strict';
var ajaxResponse = function() {
var ajax = null;
// e = event || window.event;
this.handleAjaxResponse = function() {
if (typeof event === 'undefined') {
var event = event || window.event;
}
console.log('e is now:' + typeof e);
我也没有handleAjaxResponse方法中的事件句柄(错误:未定义)。任何关于我需要做什么来解决/解决这个问题的想法将不胜感激。
答案 0 :(得分:0)
根据我之前的说明,它是由飞行员错误引起的。我使用匿名函数作为处理程序修改了对事件处理程序的调用,并将ajax / XHR对象传递给函数(应该是处理程序)。之前的实现似乎导致丢失了ajax / XHR对象的上下文。我相信可能有更好的解决方案和很高兴看到他们。
致电模块(新):
ajax.onreadystatechange = function () {
if (ajax.readyState == 4) {
new ajaxResponse().handleAjaxResponse(ajax);
}
}
致电模块(旧):
ajax.onreadystatechange = new ajaxResponse().handleAjaxResponse(); //handleAjaxResponse(ajax);