2016-12-13 2 views
1

JavaScript가 XMLHttpRequest보다 빠르다는 문제점이 있습니다. 나는 그것을 해결하지 않으려 :XMLHttpRequest가 완료된 후 Javascript를 실행하십시오.

setTimeout(function() {}, 100); 

내 코드 :

function change_country(id) { 

    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 

      var data = JSON.parse(xmlhttp.responseText); 

      document.getElementById("continent").value = data.continent; 
      document.getElementById("country").value = data.country; 

     } 
     xmlhttp.open("GET", "request_country_change.php?id=" + id, true); 
     xmlhttp.send(); 
    } 
} 

코드는 예를 들어, 원본이 아닌 것입니다. 변경 양식이어야합니다. 따라서이 예제에서는 select 필드에 모든 대륙의 목록을로드합니다. 그리고 이드와 관련이있는 대륙을 선택합니다. 그러나 선택 필드에는 목록 만로드되지만 JavaScript 부분은 실행됩니다.

document.getElementById("continent").value = data.continent; 
document.getElementById("country").value = data.country; 

일찍. 경고 또는 setTimeout 사이에 작동하면 작동하지만 다른 방법으로 해결할 수 있습니까?

+0

무엇 정확하게 "너무 일찍"의미합니까? 나중에 도망 간다면 어떻게 작동 될지 어떻게 알았습니까? 코드가 실행될 때'xmlhttp.responseText'의 값은 무엇입니까? 그리고 당신은 무엇을 기대 했습니까? – Bergi

+0

문제를 나타내는 원본 코드를 표시하십시오. – Bergi

+0

문제는 일반적으로 동적으로 생성 된 선택 목록은 동시에 데이터베이스에 저장된 옵션을 선택해야한다는 것입니다. 변경 양식이어야합니다. 예를 들어 다른 하위 카테고리에 기사를 지정하려고합니다. – etnobommel1989

답변

0

난 당신이이 같은 선택 다른 JS 기능에 추가 싶은 생각 : 난 당신이 원하는 것을 얻을 경우

function storeContinent(val){ 
    document.getElementById("continent").value = val; 
} 

확실하지 않음을

그리고 JS에서

관련 문제