Javascript 未执行AJAX/XMLHttpRequest调用之前的代码行
下面是我在Javascript中的以下代码: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();
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”
还是按钮元素?看看下面我的答案。啊,我明白我在那里做了什么。我的意思是