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

ken*_*ypu 4 html javascript ajax

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

iframe执行以下操作:

  1. iframe中的脚本发送ajax请求
  2. iframe获得响应,并更新iframe中的内容

我想要做的是拦截iframe之外的请求,并使用该信息来更新页面.

如果您使用chrome的开发工具,并转到网络标签,则可以看到iframe发出的请求/响应.如果有一个窗口事件或类似的东西会在每次响应进入页面时触发它会很好.

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

cbp*_*cbp 6

如果子iframe与父级不在同一个域中,那么您无法真正做任何可以跨浏览器工作的东西.请参阅下面的jasonjifly的答案,了解适用于某些浏览器的技术,假设您可以控制两个框架上的客户端脚本.

如果父母和孩子在同一个域中,那么您可以实现所需的目标.

例如,假设您正在使用jquery,则可以在iframe中使用此代码:

$.ajax(function() {
   .....
   complete: function() {
       window.parent.onAjaxComplete('Hi there');
   }
});
Run Code Online (Sandbox Code Playgroud)

与父框架中的此代码一起:

function onAjaxComplete(msg)
{
    alert(msg);
}
Run Code Online (Sandbox Code Playgroud)

要在跨域方案中实现类似结果,您可以让父帧轮询服务器.当服务器从子iframe接收到ajax请求时,它可以通过轮询服务提醒父页面.显然,如果您可以控制子iframe调用的服务,这将是合适的.