代码之家  ›  专栏  ›  技术社区  ›  KyleGobel

为什么我不能在jquery ajax回调上打开一个新窗口?

  •  2
  • KyleGobel  · 技术社区  · 15 年前

    用几个例子来说明我的问题…

    这行得通

    $.post("SomePage.aspx", { name : "value" },
          function (data) {
             alert(data);
          }, "text");
    

    这不管用

    $.post("SomePage.aspx", { name : "value" },
              function (data) {
                 window.open("http://www.google.com");
              }, "text");
    

    在第一个例子中,我得到了我所期望的提醒。在第二个例子中,什么都没有发生。没有打开窗户。如果在window.open调用之前或之后添加警报或其他内容,则警报工作正常,但窗口不会打开。如果我在$.post方法之后添加了一个window.open,则窗口打开得很好(当然这对我毫无帮助)。

    我想知道为什么我不能在回拨中打开一个窗口。我要做什么才能打开窗户?我想打开一扇窗,展示一些奇特的效果。

    感谢您的帮助。

    2 回复  |  直到 10 年前
        1
  •  3
  •   house9    15 年前

    应该有用吗?

    用窗户的名字试试?

    window.open("http://www.google.com", "MyWindow");
    

    根据这个帖子

    http://www.javascript-coder.com/window-popup/javascript-window-open.phtml

    window.open方法的语法 如下所示:打开(url, 窗口名[,窗口功能])

    第二个参数不是可选的(当然,javascript中的所有内容都是可选的),没有它的回调可能会发生一些奇怪的事情?

    另外,可能是在新选项卡中打开的,还是在当前窗口后面打开的?

    var x = window.open("http://www.google.com", "MyWindow");
    x.focus();
    
        2
  •  2
  •   vikbert    10 年前

    这是我的样品溶液:

    $.ajax({
        type: "GET",
        async: false,
        . . .
        url: "MyService.aspx/ConstructUrl",
        success: function(url) {
            window.open(url); 
    })
    

    添加了额外的ajax选项“async:false”,并导致在新选项卡中打开url。它在chrome和firefox上运行良好。