javascript - 有没有办法检索从 iframe 发送的 ajax 响应?

标签 javascript html ajax

我想知道是否有任何方法可以检索从 iframe 发送的 ajax 请求的响应。

iframe 执行以下操作:

  • iframe 中的脚本发送 ajax 请求
  • iframe 得到响应,并更新 iframe 中的内容

  • 我想做的是在 iframe 之外拦截该请求,并使用该信息更新页面。

    如果您进入 chrome 的开发工具,然后转到网络选项卡,您可以看到 iframe 发出的请求/响应。如果每次页面上有响应时都会触发一个窗口事件或类似的东西,那就太好了。

    注意:iframe 是不在同一个域中的页面。

    最佳答案

    如果子 iframe 与父 iframe 位于不同的域中,则您实际上无法执行任何可以跨浏览器工作的操作。假设您可以控制两个框架上的客户端脚本,请参阅下面的 jasonjifly 的回答,了解适用于某些浏览器的技术。

    如果 parent 和 child 在同一个域上,那么你可以实现你正在寻找的东西。

    例如,假设您使用的是 jquery,您可以在 iframe 中包含以下代码:

    $.ajax(function() {
       .....
       complete: function() {
           window.parent.onAjaxComplete('Hi there');
       }
    });
    

    连同父框架中的此代码:
    function onAjaxComplete(msg)
    {
        alert(msg);
    }
    

    要在跨域场景中获得类似的结果,您可以让父框架轮询服务器。当服务器收到来自子 iframe 的 ajax 请求时,它可以通过轮询服务提醒父页面。显然,这仅适用于您可以控制子 iframe 调用的服务。

    关于javascript - 有没有办法检索从 iframe 发送的 ajax 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17606690/

    相关文章:

    javascript - ng-style 和 ng-disabled 最初评估为 true,即使 ng-repeat 中的 boolean 为 false?

    javascript - 如何用javascript控制密码字段

    html - 溢出:隐藏不被 chrome 上的边框半径所尊重

    javascript - 从定义的 <td> 获取值 (ASP.NET MVC)

    javascript - 如何根据另一个组件的状态更改 css 属性

    javascript - 检测图像中的对象(图像),由重叠图像创建

    javascript - 如何将外部 html 文件加载到 div 中

    javascript - 在 JavaScript 中拖放

    javascript - 使用回调异步加载 JavaScript 文件

    php - 无法通过 ajax.get() 传递包含大文本 block 的变量