我正在尝试通过 AJAX 将信息发送到 PHP,当响应返回时,另一个 PHP 将在另一个选项卡中打开,该选项卡将处理返回的信息。
我有这个代码
function printAdmLetter()
{
if($("#adm_nomina").val()==""||$("#case_desc").val()==""||$("#boss_actions").val()==""||$('select[name=cause]').val()==null)
{
swal("¡Olvidaste algo!", "La información no está completa.", "error");
return false;
}
else
{
adm_nomina = document.getElementById("adm_nomina").value;
auth = document.getElementById("auth").value;
cause = $('select[name=cause]').val();
case_desc = document.getElementById("case_desc").value;
boss_actions = document.getElementById("boss_actions").value;
$.ajax(
{
url:"./phpLibraries/admLetter.php",
method:"POST",
data:{adm_nomina:adm_nomina,
auth:auth,
cause:cause,
case_desc:case_desc,
boss_actions:boss_actions},
success:function(data)
{
if(data=='X')
{
swal("¡Error!","No se pudo ingresar la información, intentalo nuevamente.","error");
}
else
{
window.open('phpLibraries/printAdmLetter.php?id='+data);
}
}
});
}
}
问题是它什么都不做,它不打开标签。我做了一个测试:
window.location.href='phpLibraries/printAdmLetter.php?id='+data;
这样它就可以工作了。
这是大多数浏览器采用的一种行为。
window#open
如果指令不是与用户直接交互的结果(例如某些事件click
) ,则该指令将被阻止。由异步事件(例如回调)执行的代码不会归类为与用户的直接交互,因此会停止window#open
.它不是很优雅,但是您可以使用空的 href 创建一个链接并使用 jquery 传递地址:
使用 Jquery 填充属性,然后模拟点击
正如我所说,它不是很优雅,但它可以工作。