2017-08-17 86 views
0

我有这个JavaScriptwindow.XMLHttpRequest在Chrome VS火狐

if (window.XMLHttpRequest) { 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest(); 
} else { 
    // code for IE6, IE5 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     document.getElementById("sendalertsdiv").innerHTML = xmlhttp.responseText; 
     location.reload(); 
    } 
}; 

xmlhttp.open("GET","sendbdrdata.php?project=" + projectname,true); 
xmlhttp.send(); 

它工作得很好,在Chrome中。它吸引了点击一个按钮。 sendbdrdata.php文件包含一个将数据上传到数据库的查询。正如我在Chrome中撰写的那样,它非常完美。但在Firefox中,location.reload会阻止执行senddbrdata.php文件。如果我删除线

location.reload(); 

它在Chrome和Firefox中正常工作,但它不会重新加载页面,这是我需要在这里。

+0

IE7,IE6 ...... IE5 ??你是真的吗? Netscape在哪里? O_o –

+1

如果你想提交数据到服务器,然后加载一个显示结果的新页面...... **你为什么使用Ajax?!**。只需提交表单并让服务器HTTP 302重定向回显示页面即可。 – Quentin

+0

嗯......如果FF在发送实际请求之前进入onreadystatechange事件并传递你的if语句,那将会非常奇怪。我不明白,为什么你想重新加载页面。您可以尝试延迟重新加载的执行。将该行替换为'window.setTimeout('location.reload()',500);'。但那不干净... – StanE

回答

1

location.reload();会将页面从服务器重新加载到服务器传递的任何初始状态,即没有从AJAX调用中新收集的数据。所以删除重新加载。 AJAX的想法是你可以从服务器获取数据,而无需重新加载整个页面。