对象在控制台中导致未定义的错误

时间:2013-10-24 02:48:30

标签: javascript ajax object undefined console.log

已经没有足够接近这一点......至少我的新手心灵可以抓住它。

我只是想尝试创建一个包含方法的全局包含对象,并且包含在其中的是创建和使用AJAX请求的指令。然后我继续为按钮创建一个事件监听器。然后我得到以下控制台输出。

Port: Could not establish connection. Receiving end does not exist. -This was deleted-.net/:1
Uncaught ReferenceError: globOject is not defined script.js:21
Port: Could not establish connection. Receiving end does not exist. -This was deleted-.net/:1
Exception in onResRdy: TypeError: Cannot read property 'htmlRes' of undefined ContentScript.js:84

我确信我在这里犯了很多错误。让我知道我需要包含哪些其他信息才能获得相关帮助。

var globObject = {
sendToServer: function () {
    alert('you got to me at least!');
    var xhr;
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xhr=new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xhr=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open('POST', 'counterDoc.php', true);
    xhr.send();
},
counterClick: function (counter) {
    alert('you got here!');
    counter += 1;
    this.sendToServer();
}};
var button = document.getElementById('submbut').addEventListener('click',globOject.counterClick(0), true);

2 个答案:

答案 0 :(得分:0)

更改此

var button = document.getElementById('submbut').addEventListener('click',globOject.counterClick(0)

var button = document.getElementById('submbut').addEventListener('click',globObject.counterClick(0)

这部分是一个印刷错误

globOject.counterClick(0)

答案 1 :(得分:0)

  1. 修正我在评论中所说的错字,同时@Bonakid也提到了。 globOject.counterClick(0), true);应为globObject.counterClick(0), true);

  2. 请勿使用globObject.counterClick(0)作为回调函数,请改用globObject.counterClick。当定义globObject时,将立即调用第一个。

  3. 请勿使用this.sendToServer();,而是使用globObject.sendToServer();this方法中的counterClick将为document.getElementById('submbut'),这是一个HTML元素。将console.log(this)添加到counterClick,您就会看到。

  4. A working demo here