Javascript 调用父窗口的AJAX函数

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);

我有一个超链接的HTML网页。单击此链接后,将在另一个窗口中打开同一网页,并使用
窗口将哈希值附加到url。打开
。示例url
http://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“成功”或“完成”时,用您的结果填充窗口。