【问题标题】:How do you set a Javascript attachEvent to listen for data from the server?如何设置 Javascript attachEvent 来监听来自服务器的数据?
【发布时间】:2015-04-09 19:09:52
【问题描述】:

我有一个使用 Javascript 的页面,其中我需要一个函数来侦听从服务器接收的数据。基本上,只要它到达服务器,我就需要触发该函数。

这似乎很简单 - 但到目前为止我没有尝试过任何工作。

我知道我的基本设置是正确的 - 因为我可以让它监听鼠标向上、鼠标向下和加载 - 但它在从服务器发送或接收数据时却没有。

例如,这行得通...

document.attachEvent('onmouseup', function(event) {
   alert("mouse released!");        
});

这也是……

window.attachEvent('onload', function(event) {
   alert("page loaded!");       
});

但是,这些都没有......

document.attachEvent('onreceive', function(event) {
   alert("data received!");         
});

window.attachEvent('onreceive', function(event) {
   alert("data received!");         
});

document.attachEvent('onpost', function(event) {
   alert("data posted!");       
});

window.attachEvent('onpost', function(event) {
   alert("data posted!");       
});

document.attachEvent('onmessage', function(event) {
   alert("data posted!");       
});

window.attachEvent('onmessage', function(event) {
   alert("data posted!");       
});

有什么建议吗?

提前致谢!

【问题讨论】:

  • 使用 addEventListener
  • 您可能在请求数据后等待数据。然后你需要使用en.wikipedia.org/wiki/XMLHttpRequest或jQuery,例如,来简化事情。
  • 您希望在客户端“发送或接收来自服务器的数据”时触发事件。什么是在服务器和浏览器环境之间发送或接收的数据?您想知道每一位在到达您的网络接口并进入您的 TCP 驱动程序时的实时值吗?如果不是,什么应该触发这样的监听器?换句话说,您真正有兴趣做什么?
  • 对于 XMLHttpRequest 可能有效,但我不确定它是否真的必须那么复杂。我需要做的是有一个每次请求(任何请求)发送到服务器时都会触发的函数;以及当收到响应 - 任何响应 - 时。我不需要知道有关数据本身的任何信息 - 我只需要知道何时发送了请求或收到了响应。
  • 您订阅的事件:onreceive 和 onpost 不存在,onmessage 用于 communicating between iframes。您想手动创建这些事件吗?如果您希望利用 AJAX 事件,如果它们是通过 jQuery 进行的,则可以这样做,否则我认为您无法全局利用页面发出的每个 XMLHttpRequest。

标签: javascript html


【解决方案1】:

我认为没有办法,按照addEventListener specification:

EventTarget.addEventListener() 方法注册指定的 调用它的 EventTarget 上的侦听器。事件目标可能是 文档中的元素、文档本身、窗口或任何其他 支持事件的对象(例如 XMLHttpRequest)。

确实,您可以通过搜索 event reference list here 来检查它。


显然,您需要:

  • (a.) 在每次调用 ajax 之前和之后手动调用处理函数;或
  • (b.) 使用 javascript 框架进行 ajax 调用(因此它会为您完成手动工作)

如果您选择 (b.):

¹我不为链接的课程网站工作。我在这里发布它作为个人建议。

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2020-05-02
    • 2016-12-29
    • 1970-01-01
    相关资源
    最近更新 更多