Javascript 调用父窗口的AJAX函数
我有一个超链接的HTML网页。单击此链接后,将在另一个窗口中打开同一网页,并使用Javascript 调用父窗口的AJAX函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个超链接的HTML网页。单击此链接后,将在另一个窗口中打开同一网页,并使用窗口将哈希值附加到url。打开。示例urlhttp://mywebsite.com#hash=value 网页上有一个Javascript函数,用于检查url中的此哈希值,如果找到哈希值,则调用父窗口的Javascript函数,如下所示: // if required hashvalue is in the url if(hashvalue){ window.parent.func(hashvalue);
窗口将哈希值附加到url。打开。示例urlhttp://mywebsite.com#hash=value
网页上有一个Javascript函数,用于检查url中的此哈希值,如果找到哈希值,则调用父窗口的Javascript函数,如下所示:
// if required hashvalue is in the url
if(hashvalue){
window.parent.func(hashvalue);
window.close();
}
以下是在同一网页上定义的功能:
function func(hashvalue){
var turl = 'some url';
alert(hashvalue)
jQuery.ajax({
method: "GET",
url: turl,
dataType: "jsonp",
jsonp : "callback",
success: function(response) {
alert(response)
}, error: function(x, y, z){
alert(JSON.stringify(x) + "\r\n" + JSON.stringify(y))
}
});
}
以下是单击链接后发生的情况:
弹出窗口打开,并将哈希值附加到url。检查哈希值,调用Javascript函数func
,alert(hashvalue)
alerts,弹出窗口关闭。问题是,没有调用第二个警报警报(响应)
。我已经检查了浏览器控制台,没有任何错误
如果我删除window.close()代码>(弹出窗口未关闭),第二个警报警报(响应)
也会被调用
我希望关闭弹出窗口,并完全执行函数func
。在关闭窗口之前,您没有给第二个函数足够的时间调用它。您可以在父窗口中设置第二个功能,如果需要,可以设置一个超时,以便它始终可用。如我所述,弹出窗口与链接所在的网页相同,因此该功能位于父窗口中。我认为,即使在关闭窗口之后,函数也应该被调用,因为函数定义一直在父窗口中。在这种情况下,让第二个函数关闭子窗口,只需将调用路由到第二个函数,并引用调用它的窗口,因此,在完成第二个函数的处理后,您将关闭窗口。我尝试了这个,这个正在工作。但在这种情况下,在获取AJAX函数响应之前,页面内容将加载到弹出窗口中。我可以显示空白页面(或加载图像),直到获取AJAX响应,然后关闭窗口吗?是的,只需将弹出窗口的URL设置为您想要的任何内容,空白页面或您拥有的内容,然后在AJAX“成功”或“完成”时,用您的结果填充窗口。