2017-08-17 85 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的想法是你可以從服務器獲取數據,而無需重新加載整個頁面。