3

在这种情况下:

  • 用户在文本框中输入一些信息
  • 用户单击按钮
  • 输入信息的服务器端处理发生
  • 根据服务器端处理的结果,要么打开一个新窗口,要么在当前页面上显示一条消息(并且没有弹出窗口)

async: false除了在 jQueryajax调用中使用之外,我无法想出其他方法,强烈建议不要这样做

强烈建议不要将此选项设置为 false(从而使调用不再是异步的),因为它可能导致浏览器无响应。

我试过了:

  • 使调用异步并在回调处理程序中,具体取决于服务器所说的内容,有时会打开一个新窗口-这会被弹出窗口阻止程序阻止
  • 另一个想法,由于它的不愉快,我什至没有打扰,是总是打开一个窗口,正是这个窗口调用服务器,有时会自行关闭(以某种方式更新父级中的文本)

我已经确定的是我上面描述的内容:在点击处理程序中,执行同步服务器调用,如果服务器要求这样做,则打开一个新窗口。弹出窗口拦截器对此很满意,因为窗口打开是点击处理程序中完成的。但...


类似(但不重复,因为我并不总是想打开一个新窗口)问题没有提供一个很好的解决方案:

4

2 回答 2

0

我尝试了我的“不愉快”的想法:总是打开一个新窗口,并让这个新窗口进行服务器调用,如果服务器调用的结果表明不需要它,它会自行关闭。

但这太可怕了,所以我坚持使用同步调用。

所以对我来说,这个问题的答案是否定的,你不能避免在这种情况下同步

于 2011-12-16T14:27:53.480 回答
0

你能做的是,

尝试在您的页面上设置一个隐藏字段,该字段将在服务器端设置为 true 或 false 之类的值,您可以稍后在 jquery 文档 .ready 函数中检查该字段

如果值为 false,则只显示一条消息,否则弹出一个新窗口

就如此容易

于 2011-09-18T04:56:33.400 回答