我有1.html文件:
.....
<script src="/libs/jquery-1.3.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
var url0='{$url0}';
var url1='{$url1}';
var url2='{$url2}';
var url3='{$url3}';
var OPEN_ON = false;
openurls= function(){
if(confirm('Opens all?') && OPEN_ON == false){
OPEN_ON = true;
$.ajax({<br/>
type: "POST",
url: "a1.php",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
success = true;
},
error: function(msg) {
}
})
if(success) {
window.open(url0)
window.open(url1)
window.open(url2)
window.open(url3)
}
setTimeout("location.reload(true);",3000)
OPEN_ON = false
}
return false
}
问题是:
如何在检查一些条件后将url0,url1,url2和url3发送到文件a1.php并将其发送回去。enter code here
答案 0 :(得分:0)
您只需将window.open()
次来电置于“success:”回调函数中。
现在,一旦你这样做,你就会发现新窗口实际上并没有打开。浏览器会阻止它们,因为它们看起来像是激进的弹出广告。因为这些window.open
调用是在直接用户启动的事件(如点击按钮)之外的上下文中发生的,所以它们将被阻止。也就是说,这就是你的“成功”功能应该是什么样的:
$.ajax({<br/>
type: "POST",
url: "a1.php",
data: { url0: url0, url1: url1, url2: url2, url3: url3 },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
window.open(url0);
window.open(url1);
window.open(url2);
window.open(url3);
},
error: function(msg) {
}
})
随着window.open()
调用将会“起作用”,但它不会“起作用”,因为你实际上不会弹出弹出窗口。您必须使用户活动(某处“点击”)使窗口打开,而不是XMLHttpRequest状态更改。