在几个例子中显示我的问题......
这项工作
$.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,那么窗口打开就好了(当然这对我没有任何帮助)。
我想知道为什么我无法在回调中打开一个窗口。我该怎么办才能打开窗户?我想打开一个窗口来显示一些奇特的结果。
感谢任何帮助,谢谢。
答案 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。