javascript – 当window.location = self.location不起作用时,通过AJAX重新载入页面

前端之家收集整理的这篇文章主要介绍了javascript – 当window.location = self.location不起作用时,通过AJAX重新载入页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的主页上我得到:
<ul id="login">
  <li> <a id="loginswitch" href="./login-page">log-in</a> | </li>
  <li> <a id="signupswitch" href="./signup-page">sign-up</a> </li>
</ul>

通过MooTools,我通过id获得这些锚点元素,以便一旦点击,一个闪光的div将弹出下面,包含登录注册表单(使用阻止事件传播的方法)
并且填写AJAX调用的字段时,应该创建一个会话并重新加载该页面,以便用户可以看到他现在已经登录并且显示用户级别控件的视觉效果.

ajax调用由MooTools AJAX类启动,evalScripts选项设置为true. AJAX页面返回脚本代码

<script type="text/javascript">window.location = self.location;</script>

这个系统工作完美 – 现在我想知道为什么如果我将锚点的href值更改为href =“#”,我的脚本将不再工作了?

它与窗口有什么关系吗?

当我点击一个链接,甚至当事件的传播被停止时,它是否改变了它的属性

解决方法

window.location = self.location;

这个javascript正在执行.

当它执行时,浏览器被告知要用一个新的值替换window.location的值.并不是所有的浏览器都会以同样的方式做出反应.有些可能会按照你的期望工作,但是其他的浏览器会很聪明,比较两个值.浏览器知道它是什么页面,它知道你只是要求它去同一个页面.

浏览器缓存

浏览器甚至在您的缓存中有当前页面的副本.它可以与服务器通话,询问它在缓存中的页面是否仍然有效.如果缓存有效,它可能决定不强制重新加载页面.在幕后,HTTP头会发生这种情况.浏览器和服务器可以通过许多方式通过HTTP进行通信.在这种情况下,您的浏览器会向服务器发送一个快速请求,表示如下:

GET /stackoverflow.com/posts/196643/index.html
HTTP/1.1
Host: www.stackoverflow.com
User-Agent: Mozilla/5.0
If-Modified-Since: Sun,12 Oct 2008 20:41:31 GMT

这被称为条件GET请求.通过说If-Modified-Since,您的浏览器正在说:“给我该文件,但只有在我上次看到它后才被修改.”

长篇小说,你没有明确告诉浏览器重新加载页面.

以下是您可以:

location.reload( true );

“true”是一个可选参数,用于强制重新加载.浏览器甚至不会看到缓存.它将按照你的说法做.

原文链接:https://www.f2er.com/ajax/152642.html

猜你在找的Ajax相关文章