当前位置: 首页 > 面试题库 >

JQuery可以侦听其他JavaScript的AJAX调用吗?

都沈浪
2023-03-14
问题内容

我需要在购物车中构建一个功能,该功能在发生某些更改(例如,产品被删除)时使用AJAX从服务器中检索模板的更新副本。我无法修改服务器端代码,也无法修改使购物车首先运行的JavaScript。(我知道这并不理想,但事实就是如此)

我想做的是每次购物车更新时都运行自己的JavaScript。 我想知道是否可以侦听AJAX调用 ,并在每次生成代码时运行我的代码。


问题答案:

要跟踪HTML文档上的所有AJAX调用,您可以覆盖XMLHttpRequest原型。这样,您可以监视XMLHttpRequest对象方法的操作。

这是一个小的示例代码:

var open = window.XMLHttpRequest.prototype.open,
    send = window.XMLHttpRequest.prototype.send,
    onReadyStateChange;

function openReplacement(method, url, async, user, password) {
    var syncMode = async !== false ? 'async' : 'sync';
    console.warn(
        'Preparing ' +
        syncMode +
        ' HTTP request : ' +
        method +
        ' ' +
        url
    );
    return open.apply(this, arguments);
}

function sendReplacement(data) {
    console.warn('Sending HTTP request data : ', data);

    if(this.onreadystatechange) {
        this._onreadystatechange = this.onreadystatechange;
    }
    this.onreadystatechange = onReadyStateChangeReplacement;

    return send.apply(this, arguments);
}

function onReadyStateChangeReplacement() {
    console.warn('HTTP request ready state changed : ' + this.readyState);
    if(this._onreadystatechange) {
        return this._onreadystatechange.apply(this, arguments);
    }
}

window.XMLHttpRequest.prototype.open = openReplacement;
window.XMLHttpRequest.prototype.send = sendReplacement;

使用此示例,对于每个AJAX调用,您都会在JavaScript控制台中收到警告。

它不是jQuery脚本,但是您可以根据需要在内部使用jQuery。

此解决方案可能无法在IE 6或更早版本上运行,但可以在FF,IE7 +,Chrome,Opera,Safari …



 类似资料:
  • 问题内容: 在jquery Ajax调用中,我当前正在处理statusCode分别为200和304。但是我还定义了“错误”,以捕获可能返回的任何错误。 如果有相关的验证消息,我们将返回状态码400-错误的请求。 然后,在属于我定义的statusCode“ 400”函数之前,属于“错误”函数。这意味着有两个动作发生。 理想情况下,我不想定义“错误”和“成功”,而仅定义“ statusCode”,但是

  • 问题内容: 我有一个应该重定向到项目视图页面的Ajax侦听器。但是,由于我使用泛型类型作为模型,因此我想在我的通用数据表控制器中另外指定带有第二个参数的视图。 不幸的是,一个可以在两种侦听器方法之间进行选择,一种可以使用 事件 参数来帮助识别对象,第二种可以让您有机会发送 免费的参数, 但是缺少事件。 模板 : 控制器 : 我可以向bean添加其他属性,但由于它是通用的,因此提供模型项不适合污染它

  • 问题内容: 加载页面后,我将对php脚本执行Ajax调用,这将更新服务器。但是,此脚本有时可能需要一分钟才能完成,并且在脚本运行时,我无法执行我需要处理的其他Ajax调用- 即第一个Ajax调用不应中断其他Ajax调用。任何想法如何做到这一点? 首次Ajax通话: 第二个Ajax调用(用户触发的调用): 问题答案: 腺苷的上述评论是正确的。 “在PHP中,一次只能在一个会话上运行一个脚本,以免覆盖

  • 假设我有两个html文件具有如下功能: 我想从a.html直接指向B.html,然后直接调用函数B。我怎样才能做到?。因为我想要将JSON字符串从函数A传递到函数B,而不是使用window.onload()或$(document).ready()。 我将我的JSON字符串存储到本地存储,并将用户引导到b.html。然后函数B将读取本地存储并直接处理数据。

  • 问题内容: 我使用jquery ajax从javascript调用php的代码似乎存在问题。Ajax调用似乎成功了,但是我没有从php函数返回正确的信息。 在php函数中,我创建一个SQL查询。在执行删除查询之前,我将查询发回作为调试的响应。这是显示查询的div的HTML。 这是jquery ajax调用。有两个变量发送给PHP函数:用于删除节点的nodeid和用于该函数的option delet

  • 问题内容: 有没有办法将全局侦听器附加到JSF中的所有AJAX调用?也许通过相位监听器之类的东西? 这是一个难题……假设您正在使用f:ajax标记和apache shiro之类的东西,并且您的会话将过期。然后,您返回并单击附加了f:ajax的按钮。服务器将响应302重定向到登录页面。 用户什么都看不到。他们可以反复单击并调用ajax调用,但对他们来说,该应用程序只是“死”。 所以,尽管如此,是否有