调用父窗口的AJAX功能

时间:2014-04-13 08:09:57

标签: javascript jquery ajax

我有一个带有超链接的HTML网页。点击此链接后,在另一个窗口中打开相同的网页,并使用window.open将哈希值附加到网址。示例网址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))
    }
});
}

点击链接后会发生以下情况:

弹出窗口,其中哈希值附加到网址。正在检查哈希值,正在调用Javascript函数funcalert(hashvalue)警报和弹出窗口关闭。问题是,第二个警报alert(response)没有被调用。我检查了浏览器控制台,没有任何错误。

如果我删除window.close();(弹出窗口未关闭),则第二个警报alert(response)也会被调用。

我希望关闭弹出窗口并完全执行函数func

1 个答案:

答案 0 :(得分:1)

在关闭窗口之前,您没有给第二个功能足够的时间进行调用。您可以在父窗口中设置第二个功能,如果需要可以设置超时,以便始终可以执行操作。