Javascript 未执行AJAX/XMLHttpRequest调用之前的代码行

Javascript 未执行AJAX/XMLHttpRequest调用之前的代码行,javascript,html,ajax,xmlhttprequest,Javascript,Html,Ajax,Xmlhttprequest,下面是我在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();

下面是我在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与串行端口连接并进行设置。

按钮
输入类型=“button”
对它使用的
文本不使用
innerHTML

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

您使用的是输入元素还是按钮元素?

当JavaScript函数运行时,浏览器根本做不了什么,这包括重新绘制DOM

您的代码正在按您想要的顺序运行,DOM正在更新,页面没有使用您所做的更改重新绘制

它必须是同步的

不推荐使用同步XMLHttpRequests,因为它们会导致浏览器在等待响应时锁定。i、 e.因为它们会导致您遇到的问题

因为servlet中有一个thread.sleep方法,以便Arduino与串行端口连接并进行设置

这不会受到使用同步或异步请求的影响

在收到回复后,您可能想运行一些您在问题中遗漏的其他JS


如果是这样的话,真正的解决方案是在请求完成后执行您想要执行的任何操作,并将其移动到指定为XHR对象的加载事件处理程序的函数中。

您的意思是什么?您是否分别测试了这两个代码块?也许第一个块根本不起作用。它起作用了,但只有在调用Ajax之后。我想要的是在第二个块之前先执行第一个块。你能编辑帖子并分享准确的代码片段吗。。如果我可以假设你已经篡改了它,并且只发布了所需的数据。。在使用时以完全相同的格式共享它您使用的是
input type=“button”
还是按钮元素?看看下面我的答案。啊,我明白我在那里做了什么。我的意思是