所以我遇到了这个问题,第一次 window.location.replace 尝试时我丢失了所有数据(第二次我重新加载同一页面时一切似乎都工作正常) 我查了一下,没有发现这样的东西
这是代码,以便我可以更彻底地解释我的问题:
$(document).ready(function() {
$('#login_form').on('submit', function(event){
event.preventDefault();
// Retrieve form data
var formData = {
'index' : $('input[name=user]').val(),
'password' : $('input[name=pass]').val()
};
//convert formData from JS object to PHP understandable
var formData1=jsObj2phpObj(formData);
var url= 'login.php';
//sending with post in ajax to register.php
$.post(url,{formData1:formData1})
.done(function(data){
if(!(data["Log_success"])){
alert("Log failed")
}
else
{
window.location.replace('http://localhost/CPPv2/admin_commented/index.html#home');
var draw_stringholder="";
draw_stringholder+=data["user_index"]+data["user_email"];
document.getElementById("myPanel").innerHTML=draw_stringholder;
}
}
所以我的函数的作用是将数据发送到 PHP 页面并接收返回的 JSON 编码数据。我第一次提交表单时,似乎没有收到任何网络数据(我认为这是因为 window.location.replace 删除了它),但刷新页面并再次提交表单后,一切正常(索引和电子邮件已写入)在 myPanel 元素内)。
我尝试过使用 window.location/window.location.href ...(我想我尝试了所有其他功能),但它们只是不将我发送到任何地方,就像它们根本不工作一样。 if(!(data["Log_sccuess"])) 部分始终有效(因此客户端 - 服务器通信工作正常)。
还有一点很重要,我使用的是 JqueryMobile-1.4.4(也尝试过他们的重定向方法不起作用)
总而言之,我想将当前页面链接更改为其他页面链接,而不会丢失服务器生成的数据。 (因为我基本上停留在同一页面上,只是更改了它的 Id 部分)。我可以通过登录后刷新页面(登录后发送服务器请求)来解决我的问题,但这似乎不是正确的方法。
最佳答案
我使用 $.mobile.changePage( "#ulr", { transition: "slideup"} ); 而不是 window.location.replace
关于javascript - window.location.replace 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27441962/