为什么 AJAX 对第一个函数的响应“_blank”有效,但对第二个函数无效
Why does the response of AJAX with "_blank" work for first function, but not the second function?
我有一个jsp,其中有两个单选按钮,根据单击的按钮,我调用相应的函数。这两个函数都有 ajax 调用,成功响应在新选项卡中打开新 url。第一个函数完美地做到了,但第二个函数不能正常工作。
控制台不显示任何内容。(铬(弹出窗口阻止程序会阻止来自第二个函数的 ajax 响应的响应链接,但不会阻止第一个函数的 ajax 响应。我不希望(铬(浏览器的弹出窗口阻止程序阻止它。这在Firefox和Safari中不会发生。我还没有尝试过反对IE。但现在只发生在Chrome中。
function submit(){
if($('input[name=questionOption]:checked').val() == "A"){
yesHelper();
}else if($('input[name=questionOption]:checked').val() == "B"){
addHelper();
}
}
function yesHelper(){
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
var AQuestion = document.getElementById("A_Actual_Question_Id").value;
var lang= "T";
var stringifiedInput = JSON.stringify({"A_Actual_Question" : AQuestion, "language" : "T"});
alert(stringifiedInput);
$.ajax({
url: "/Abcd/efgh/add1",
type: "POST",
async: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
data: stringifiedInput,
beforeSend: function(xhr) {
xhr.setRequestHeader(header, token);
},
success: function(response){
window.open("http://localhost:8080/Abcd"+response, '_blank');
}
});
}
function addHelper(){
var token1 = $("meta[name='_csrf']").attr("content");
var header1 = $("meta[name='_csrf_header']").attr("content");
var B_Question = document.getElementById("B_ActualQuestion_Id").value;
var lang1= "T";
var B1 = document.getElementById("B1_Id").value;
var stringifiedInput_B = JSON.stringify({"B_Question" : document.getElementById("B_ActualQuestion_Id").value,
"language" : "T",
"B1" : B1
});
$.ajax({
url: "/Abcd/efgh/add2",
type: "POST",
async: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
data: stringifiedInput_B,
beforeSend: function(xhr) {
xhr.setRequestHeader(header1, token1);
},
success: function(response1){
window.open("http://localhost:8080/Abcd"+response1, '_blank');
}
});
}
如果您不希望浏览器阻止弹出窗口,那么您必须直接在某种用户交互(例如单击某些内容(时打开它——否则,大多数当前浏览器会在默认设置中阻止它,因为没有用户交互打开的弹出窗口通常是用户不想要的(广告或其他烦人的东西(。
现在,首先发出异步 AJAX 请求,然后尝试在成功处理程序中打开弹出窗口,已经将其与初始用户交互"分离"。
您可以尝试:
-
改为发出同步 AJAX 请求(不推荐(,
-
首先打开弹出窗口(地址
about:blank
(,发出 AJAX 请求,然后更改弹出窗口的位置。
相关文章:
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- 外部链接的Javascript文件赢得't执行,但函数有效
- PHP函数的返回看起来如何对AJAX和PHP有效
- JavaScript函数在Safari中有效,但在Firefox中找不到
- 什么's是调用具有可变参数的函数的有效方法
- JavaScript,数组和函数 - 只有数组的最后一个元素有效
- 当将函数传递给方法时,为什么使用匿名函数容器而不仅仅是原始函数有效
- javascript onload函数有效,onresize则无效
- '$未定义'错误,但函数有效
- 为什么document.ready中的事件处理程序函数有效但无效;取出后不起作用
- 按钮单击Javascript函数失败,但函数有效
- 当我添加警报(“现在它可以工作”);这个函数有效,但我不想要这个
- 为什么这个扩展函数有效
- 包括来自外部文件的jQuery,有些函数有效,有些则无效
- JavaScript 匿名函数有效语法,防止全局范围污染
- Prestashop javascript加载函数有效,但其他函数无效
- onclick有两个功能.只有第一个函数有效
- 为什么这个记忆实现对匿名函数有效,而对声明函数无效?
- Processing.getInstanceById (id);对一个函数有效,对另一个函数未定义
- 为什么这个函数有效?不应该在每次调用函数时“执行”都返回 false