如何在jquery的ajax调用中等待

时间:2014-01-21 13:54:07

标签: javascript html ajax jquery

我需要做的是首先调用URL来生成令牌,然后在生成令牌后打开(相同)站点的另一个页面。问题是生成令牌的窗口快速关闭所以我无法进行身份验证

这是我的实际代码

function configurarClickLinkPromociones() {
    $("#promocionesLink", contextoServicios).click(function () {
        var winRef;
        var seccionUrl = $(this).attr("data-url-seccion");

        if (seccionUrl != "") {

            showLoading();
            $.ajax({
                url: '/Support/GetToken',
                type: "GET",
                dataFormat: "text/json",
                success: function (data) {
                    HideLoading();
                    winRef = window.open(data.Url + data.Token, '', 'menubar=0,resizable=1,location=1,scrollbars=1,width=976,height=505');
                    winRef.close();
                    winRef.open(seccionUrl, '', 'menubar=0,resizable=1,location=1,scrollbars=1,width=976,height=505');
                },
                error: function (XMLHttpRequest) {
                    HideLoading();
                    eval(XMLHttpRequest.responseText);
                }
            });
        }
    });
}

2 个答案:

答案 0 :(得分:1)

只要操作完成,只需在新窗口中调用window.close()即可。的 See this demo (click).

在这个演示中,我的新窗口只是等待,然后自行关闭:

setTimeout(function() {
  window.close();
}, 1000);

但是,您可以改为使用ajax成功回调:

$.ajax({
  url: 'some/path',
  success: function() {
    window.close();
  }
});

答案 1 :(得分:0)

仅用于测试目的,您可以这样使用alert

winRef = window.open(data.Url + data.Token.....);
alert(data.Token);  //<-----here
winRef.close();

或者您可以这样使用setTimeout

winRef = window.open(data.Url + data.Token.....);
setTimeout(function(){
    winRef.close();
    winRef.open(seccionUrl, '',...);
},2000);