如果我仅向您展示该示例,这将使我更容易解释该问题-> http://jsfiddle.net/RU2SM/ 如您所见,有2个按钮,一个称为“ AJAX”,一个称为“ Direct”。 …因此,如果单击“直接”,它将打开窗口(Chrome上为新标签),但是如果我尝试在AJAX成功处理程序上创建window.open(),则它的工作方式将不同。 我确定问题出在AJAX,但我不知道如何解决。 将不胜感激任何好主意。谢谢
这就像一个魅力:
// Direct window.open() $('#btnDirect').on('click',function(){ window.open('http://google.com') }) var success = false; //NOTE THIS // AJAX window.open() $('#btnAJAX').on("click", function(){ $.ajax({ url: "/user/login/", context: document.body, async:false, //NOTE THIS success: function(){ //THIS ALSO CHANGED success = true } }); if(success){ //AND THIS CHANGED window.open('http://google.com') } })
这是当Ajax调用成功时,它将变量成功设置为true。 该async:false属性确保在Ajax调用完成之后触发if语句。 因此,在与您的直接链接相同的情况下会触发window.open。
async:false