2010-02-17 1 views
0
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, но похоже, что ему нужен какой-то переключатель задач для обработки XMLHttpRequest().

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

Любые идеи?

ответ

1

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

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

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

+0

Хороший глаз! Благодарю. –