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

时间:2010-05-07 19:05:54

标签: jquery callback

在几个例子中显示我的问题......

这项工作

$.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 个答案:

答案 0 :(得分:3)

应该有用吗?

尝试使用窗口名称?

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

根据这篇文章

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

  

window.open方法的语法   如下:open(URL,   windowName [,windowFeatures])

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

另外,可能是在新标签页或当前窗口后面打开了吗?

var x = window.open("http://www.google.com", "MyWindow");
x.focus();

答案 1 :(得分:2)

这是我的示例解决方案:

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

添加了额外的ajax选项“async:false”,它导致在新标签中打开网址。它适用于chrome和firefox。