Asp.net 如果我只想*有时*打开一个新窗口,我可以避免进行同步回调吗?
在这种情况下:Asp.net 如果我只想*有时*打开一个新窗口,我可以避免进行同步回调吗?,asp.net,jquery,popupwindow,popup-blocker,Asp.net,Jquery,Popupwindow,Popup Blocker,在这种情况下: 用户在文本框中输入一些信息 用户单击一个按钮 服务器端对输入的信息进行处理 根据服务器端处理的结果,将打开一个新窗口,或在当前页面上显示一条消息(不弹出) 除了在jQueryajax调用中使用async:false之外,我想不出其他方法,即: 将此选项设置为false(从而不再进行呼叫 强烈不鼓励使用异步),因为它会导致浏览器 变得没有反应 我试过: 让调用异步并在回调处理程序中,这取决于服务器所说的,有时会打开一个新窗口-这会被弹出窗口阻止程序阻止 另一个想法,我甚至没有
- 用户在文本框中输入一些信息
- 用户单击一个按钮
- 服务器端对输入的信息进行处理
- 根据服务器端处理的结果,将打开一个新窗口,或在当前页面上显示一条消息(不弹出)
ajax
调用中使用async:false
之外,我想不出其他方法,即:
将此选项设置为false(从而不再进行呼叫
强烈不鼓励使用异步),因为它会导致浏览器
变得没有反应
我试过:
- 让调用异步并在回调处理程序中,这取决于服务器所说的,有时会打开一个新窗口-这会被弹出窗口阻止程序阻止
- 另一个想法,我甚至没有因为它的不愉快而烦恼,就是总是打开一个窗口,正是这个新窗口调用服务器,有时会自动关闭(以某种方式在退出时更新父窗口中的文本)
类似的(但不是重复的,因为我并不总是想打开一个新窗口)问题没有提供一个好的解决方案:
- 你能做的是
尝试在页面上设置一个隐藏字段,该字段将由服务器端的true或false等值设置,稍后您可以在jquery document.ready函数中进行检查
如果该值为false,只需显示一个msg else弹出一个新窗口
就这么简单我尝试了我的“不愉快”想法:总是打开一个新窗口,让新窗口进行服务器调用,如果服务器调用的结果表明不需要它,则关闭它自己 但那太可怕了,所以我坚持使用同步呼叫
所以对我来说,这个问题的答案是:不,在这种情况下,你不能避免同步你真的需要打开一个新窗口吗?难道你不能打开一个覆盖框或类似的东西吗?和Zeta一样的问题,而且,正如jQuery文档所说,强烈反对进行同步服务器通信……如果你不能立即得到服务器响应,你的用户将无法在你的页面上做任何其他事情。基本上,浏览器会一直挂起,直到服务器响应通过或出现错误。。。我知道这是不好的,我寻求一个更好的方法。Lightbox Me是一个轻量级模式,它对开发人员很友好(不像大多数Lightbox插件),感谢您的回答,但我不想发回整个页面,我想这就是您在服务器端设置隐藏字段值的意思?如果您正在进行Ajax调用,您肯定会得到一个html/数据,尝试从服务器获取额外值,该值将决定是否弹出。