验证php条件后打开多个窗口

时间:2010-11-12 14:59:46

标签: php javascript windows ajax

我有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

1 个答案:

答案 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状态更改。