以下是我在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与串口连接并设置。
答案 0 :(得分:1)
当JavaScript函数正在运行时,浏览器根本不会做很多事情,包括重新绘制DOM。
您的代码按照您想要的顺序运行,并且DOM正在更新,页面不会重新绘制您所做的更改。
它必须是同步的
不推荐使用同步XMLHttpRequests,因为它们会导致浏览器在等待响应时锁定。即因为它们会导致您遇到的问题。
因为servlet中有一个thread.sleep方法,以便Arduino与串口连接并设置。
使用同步或异步请求不会影响它。
您可能希望在收到回复之后运行您从问题中遗漏的其他一些。
如果是这样,真正的解决方案是在请求完成后采取您想要做的任何事情,并将其移动到您指定为XHR对象的加载事件处理程序的函数。
答案 1 :(得分:-1)
button
input type="button"
对innerHTML
使用的文字不使用value
:
document.getElementById("button").value = "Please Wait...";
您使用的是输入还是按钮元素?