Javascript: Переключатель задач XMLHttpRequest - PullRequest
0 голосов
/ 17 февраля 2010
document.getElementById('contactButton').value = "Sending";
xmlhttp.onreadystatechange=stateChanged;

xmlhttp.open("GET",url,false);
xmlhttp.send(null);
function stateChanged(){
    if (xmlhttp.readyState==4) {
    var response = xmlhttp.responseText;
    if(response == "true"){
        document.getElementById('contactButton').value = "Sent :)";
    }
}

При запуске этого javascript, contactButton никогда не устанавливается на "Отправка ...". Он зависает на одну секунду, а затем меняется на «Отправлено :)».

Я не совсем уверен в порядке обработки javascript, но похоже, что для обработки XMLHttpRequest().

требуется какой-то переключатель задач.

Это, очевидно, сокращенный код, но у меня есть несколько других вещей javascript / css, которые я пытаюсь сделать до xmlhttp. Кажется, что xmlhttp просто вступает во владение, когда запрос отправлен.

Есть идеи?

1 Ответ

1 голос
/ 17 февраля 2010

Вы передаете false, чтобы открыть, поэтому он работает синхронно. Это означает, что он не использует readyState и вместо этого просто задерживает до завершения запроса. Если вы хотите сделать синхронизацию, она должна быть:

xmlhttp.open("GET",url,false); 
xmlhttp.send(null); 
if(xmlhttp.status == 200)
{
  var response = xmlhttp.responseText;
  document.getElementById('contactButton').value = "Sent :)";
}

Вам следует перейти на асинхронный режим, чтобы избежать зависания скрипта, и вам, вероятно, будет проще использовать библиотеку JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...