location.reload() 完成后触发 jQuery 函数
我有一个 Rails 应用程序,允许用户通过 jQuery 模式表单登录。登录后,我使用 location.reload() 刷新原始页面。
此时,我正在尝试创建一个新的 jQuery 对话框。如何仅在 location.reload() 执行完成后打开对话框?
现在,对话框正在 location.reload() 完成之前加载。这导致对话框消失。
I have a Rails app that allows users to login via jQuery modal form. Once logged in, I refresh the original page using location.reload().
At this point, I'm attempting to create a new jQuery dialog. How can I open the dialog only after location.reload() has finished executing?
Right now the dialog is loading up before location.reload() is done. This is causing the dialog to disappear.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你不能。
调用
location.reload()
将重新加载整个页面。一旦完成,原始页面的 Javascript 就完全消失了。如果您无论如何都要重新加载整个页面,那么首先使用 AJAX 的意义何在?
您应该使用常规回发执行登录,然后添加发出 Javascript 的服务器端代码以在登录回发中显示对话框。
您可以创建一个小的弹出窗口,在重新加载后使用
window.opener
与原始页面进行通信,但这是一个非常丑陋的想法,并且很容易受到弹出窗口拦截器的攻击。You can't.
Calling
location.reload()
will reload the entire page. Once it's finished, the Javascript from the original page is completely gone.If you're reloading the entire page anyway, what's the point of using AJAX in the first place?
You should perform the login using a regular postback, then add server-side code that emits Javascript to show the dialog in the login postback.
You could create a small popup window that uses
window.opener
to communicate with the original page after it reloads, but that's a very ugly idea and would be vulnerable to popup blockers.也许您可以尝试通过附加
?var=value
来通过 url 传递变量。然后检查
url 中的该参数,如果存在,则执行 jQuery 的
delay()
函数?不确定这是否适用于 Rails,因为我主要使用 PHP 和 Rails。德鲁帕尔。祝你好运!
Perhaps you could try passing a variable through the url by appending
?var=value
.Then in your
check for that parameter in the url and if it is there, execute jQuery's
delay()
function?Not sure if this will work with Rails as I mostly do PHP & Drupal. Good luck!