我對此感到困惑。我有兩個XMLHttpRequests在我的HTML文件的Select元素上運行(當HTML文件加載時,每個元素都在不同的Select元素上運行)。我正在使用W3C學校推薦的回調函數。如果我的變量xmlHttp在我的回調函數之外定義,那麼只有第二個請求有效,第一個請求在有機會完成之前被刪除。如果我把'var'放在它的前面,會發生同樣的事情。 但是,如果我的變量在前面有'var'的函數內部,那麼絕對沒有任何反應。我已經縮小到了在哪裏說「這裏!!!!!」是程序似乎掛起的地方。我知道loadXMLDoc函數實際上並沒有完成,因爲當我在它之外放置一個警報時,沒有任何反應。我認爲它與'if'部分有關,程序不能識別xmlHTTP,即使它是在本地定義的。我對JavaScript仍然很陌生,只是希望能夠一次運行多個XMLHttpRequest對象,而不需要彼此相處,也不會掛頁。任何想法,爲什麼這不起作用?多個XMLHttpRequests不起作用
HTML:
<form>
<select id="stateSelectCities">
<!-- Will be populated with MySQL -->
</select>
<select id="citySelect">
<option>Select a State</option>
</select>
<br />
<br />
<select id="stateSelectCounties">
<!-- Will be populated with MySQL -->
</select>
<select id="countySelect">
<option>Select a State</option>
</select>
<p id="xmltest"></p>
<p id="currentState"></p>
<p id="sc"></p>
<p id="rs"></p>
<p id="st"></p>
</form>
的JavaScript:
<script type="text/javascript">
function loadXMLDoc(method, data, url, cfunc) {
var xmlHTTP = new XMLHttpRequest();
xmlHTTP.onreadystatechange = cfunc;
xmlHTTP.open(method, url, true);
if (data) {
xmlHTTP.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHTTP.send(data);
} else {
xmlHTTP.send();
}
}
function returnStateListForCounties() {
loadXMLDoc('GET', null, "stateslist.xml", function() {
document.getElementById('countySelect').disabled = true;
if (xmlHTTP.readyState == 4 && xmlHTTP.status == 200) {
// Read the XML Data and Populate Counties States Menu
var response = xmlHTTP.responseXML;
var states = response.getElementsByTagName('state');
for (i = 0; i < states.length; i++) {
var option = document.createElement('option');
option.innerHTML = states[i].childNodes[0].nodeValue;
option.setAttribute('onmouseup', 'returnCounties(this.innerHTML)');
document.getElementById("stateSelectCounties").add(option);
}
}
//document.getElementById("sc").innerHTML = 'statusCode: ' + xmlHTTP.status;
//document.getElementById("rs").innerHTML = 'readyState: ' + xmlHTTP.readyState;
//document.getElementById("st").innerHTML = 'statusText: ' + xmlHTTP.statusText;
})
}
function returnStateListForCities() {
loadXMLDoc('GET', null, 'stateslist.xml', function() {
document.getElementById('citySelect').disabled = true;
// HERE!!!!!
if (xmlHTTP.readyState == 4 && xmlHTTP.status == 200) {
// Read the XML Data and Populate Cities States Menu
var response = xmlHTTP.responseXML;
var states = response.getElementsByTagName('state');
for (i = 0; i < states.length; i++) {
var option = document.createElement('option');
option.innerHTML = states[i].childNodes[0].nodeValue;
option.setAttribute('onmouseup', 'returnCities(this.innerHTML)');
document.getElementById("stateSelectCities").add(option);
}
}
document.getElementById("sc").innerHTML = 'statusCode: ' + xmlHTTP.status;
document.getElementById("rs").innerHTML = 'readyState: ' + xmlHTTP.readyState;
document.getElementById("st").innerHTML = 'statusText: ' + xmlHTTP.statusText;
})
}
//returnStateListForCounties();
returnStateListForCities();
</script>
id是唯一的。你有3個選擇相同的ID。 – rogelio 2014-10-09 07:15:29
@rogelio感謝您的支持。我已經更新了HTML部分。總共有4個選擇元素(具有唯一的ID),其中2個我現在想改變。 – SpencerAAA 2014-10-09 07:21:43
你可以將網址複製到w3cschools網站(函數參考)? – rogelio 2014-10-09 07:30:26