在AJAX响应之后使用JavaScript重定向到页面

时间:2012-12-11 05:55:56

标签: javascript jquery

我面临一个有趣的问题:

目前我有一个“打印”按钮,它位于一系列页面的末尾,用户可以在这些页面中输入信息,进行选择并获得独特的结果。

当他们按下此按钮时,表示应用程序状态的数据将通过JQuery的.post()发送。一旦目标脚本处理该数据并将其作为唯一ID存储在数据库中,该ID就会被发送回成功处理程序。然后在成功处理程序中使用该ID打开一个新窗口,该窗口将下拉它们发送的数据并以可打印的方式显示它。

$.post("api/PrintJob.php", applicationStateJSON, function(response)
{
    window.open("print/?job=" + response.token);

}, "json");

由于window.open()调用不直接位于点击处理程序中,因此可以理解地阻止了

我不能简单地使用window.location.href = ?;,因为如果用户想要返回某个步骤并进行一些更改等,则需要维护应用程序的状态。

目前我唯一的解决方案是在成功处理程序中出现一个辅助按钮,并启动打印窗口。然而,我宁愿保留当前的感觉,并在新的标签/窗口/弹出/可能的情况下打开窗口,而不会被阻止。

也许有一种方法可以在我最初点击打印时启动弹出窗口,然后在数据到达数据库时重新加载它?

欢迎任何想法。

2 个答案:

答案 0 :(得分:1)

考虑到这种情况,一个选项可能是隐藏第二个按钮,并在令牌返回后触发点击。

var token;

$('#hiddenbutton').click(function(){
     window.open("print/?job=" + token);
 }):

$.post("api/PrintJob.php", applicationStateJSON, function(response)
{
    token = response.token;
    $('#hiddenbutton').trigger('click');
}, "json");

答案 1 :(得分:1)

我的建议是在第一次点击时打开一个窗口,然后从新打开的窗口发帖。在新打开的窗口中收到帖子的回复。此响应可用于使用JS / JQuery绘制新窗口。