处理前更改Javascript按钮文本

处理前更改Javascript按钮文本,javascript,html,ajax,Javascript,Html,Ajax,我目前有一个按钮,其值为“提交”。我想这个文本更改为“提交”一旦点击它。目前,我有以下几点: <input type="button" id=btnSub name="submitToeNICQ" value="Submit" onclick="do_submission()"> <div id="results"> No submission has been performed yet</> <script> function do_su

我目前有一个按钮,其值为“提交”。我想这个文本更改为“提交”一旦点击它。目前,我有以下几点:

<input type="button" id=btnSub name="submitToeNICQ"  value="Submit" onclick="do_submission()">
<div id="results"> No submission has been performed yet</>
<script>  
function do_submission()
{
    var elem = document.getElementById("btnSub");
    elem.value="Submitting";
    var xhReq = new XMLHttpRequest();
    var request = "main.php?pid=21&submiteNICQ=yes " 
    xhReq.open("GET", request, false);  // send a request
    xhReq.send(null);
    document.getElementByID("results").innerHTML=xhReq.responseText;
}
</script>

尚未执行任何提交
函数do_submission()
{
var elem=document.getElementById(“btnSub”);
elem.value=“提交”;
var xhReq=新的XMLHttpRequest();
var request=“main.php?pid=21&submiteNICQ=yes”
open(“GET”,request,false);//发送请求
xhReq.send(空);
document.getElementByID(“结果”).innerHTML=xhReq.responseText;
}
我希望在处理XMLHttpRequest之前更改文本,以便用户立即进行更改。上述代码似乎仅在整个请求完成后(通常在按下按钮后3秒左右)更改按钮文本


有人对此有解决方案吗?

不要执行同步AJAX请求。它们专为异步请求而设计:

function do_submission()
{
    var elem = document.getElementById("btnSub");
    elem.value="Submitting";
    var xhReq = new XMLHttpRequest();
    var request = "main.php?pid=21&submiteNICQ=yes " 

    // Removed third parameter (it's now 'true' by default)
    xhReq.open("GET", request);

    // Added callback function for handling different states
    xhReq.onreadystatechange = function () {
      if (xhReq.status == 200 && xhReq.readyState == 4) {
        document.getElementByID("results").innerHTML=xhReq.responseText;
      }  
    }; 
    xhReq.send(null);

}
当前代码等待请求完成,然后才能更新任何UI部件

上面的代码异步触发请求,因此函数将在请求完成之前结束,浏览器有时间更新UI

jQuery:

function do_submission()
{
    $("#btnSub").val("Submitting");

    $.get("main.php?pid=21&submiteNICQ=yes", function (data) {
      $("#results").html(data);
    });
}

太好了,非常感谢!一旦我被允许(必须等待10分钟),我将标记为接受答案。@Josh你使用jQuery吗(你为它添加了一个标记)?使用jQuery for AJAX确实缩短了代码。不,我不使用jQuery,我对它了解不多。不过谢谢你的建议,我现在就来研究一下。@Josh,那么不要在问题中添加“jQuery”标记;)不管怎样,我发布了你使用jQuery函数重写的代码。谢谢你的帮助。去掉jquery标记:)