簡體   English   中英

未執行AJAX / XMLHttpRequest調用之前的代碼行

[英]Lines of code before AJAX/XMLHttpRequest Call not executed

這是我在Javascript中擁有的以下代碼:

document.getElementById("button").disabled = true;
document.getElementById("button").innerHTML = "Please Wait...";

var xhttp = new XMLHttpRequest();
xhttp.open("GET", "MoodInput"+ "?moodValue=" + input, false);
xhttp.send();

當我將表單提交到Servlet時,似乎首先執行xhttp.send()函數。 但是,我希望首先執行以下兩行:

document.getElementById("button").disabled = true;
document.getElementById("button").innerHTML = "Please Wait...";

我該怎么辦才能解決問題? 它必須是同步的,因為servlet中有一個thread.sleep方法,以便Arduino與Serial Port連接並進行設置。

當JavaScript函數運行時,瀏覽器根本不會做很多事情,這包括重新繪制DOM。

您的代碼按照您想要的順序運行,並且DOM正在更新,只是頁面沒有被所做的更改重新繪制。

它必須是同步的

不建議使用同步XMLHttpRequest,因為它們會導致瀏覽器在等待響應時鎖定。 即因為它們導致您遇到的問題。

因為servlet中有一個thread.sleep方法,以便Arduino與串行端口連接並進行設置。

使用同步或異步請求不會受到影響。

您可能希望在收到響應運行其他一些您在問題中遺漏的JS

如果是這樣,真正的解決方案是在請求完成后采取您想做的所有事情,然后將其移至您指定為XHR對象的裝入事件處理程序的函數。

button input type="button"不使用innerHTML作為它使用value的文本:

document.getElementById("button").value = "Please Wait...";

您正在使用輸入或按鈕元素嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM