[英]try to getting country code but without alert its not work
這是我的代碼:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$.get(
"final.xml",
null,
function (data) {
xml = data;
},
"xml"
);
function get_list(){
var city = $('#name').val();
var xPath = '//*[@value = "' + city + '"]/../../@value';
var iterator = xml.evaluate(xPath, xml.documentElement, null,
XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
var thisNode = iterator.iterateNext();
var str = '';
while (thisNode) {
if (str) {
str += ', ';
}
str += thisNode.textContent;
thisNode = iterator.iterateNext();
}
$.get(
"country_code.xml",
null,
function (data) {
xml = data;
},
"xml"
);
var code = str;
var xPath1 = '//*[@name = "' + code + '"]/@code';
var iterator = xml.evaluate(xPath1, xml.documentElement, null,
XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
var thisNode = iterator.iterateNext();
var str1 = '';
while (thisNode) {
if (str1) {
str1 += ', ';
}
str1 += thisNode.textContent;
thisNode = iterator.iterateNext();
}
$("#result").text(str1);
}
</script>
</head>
<body>
<input type="text" id="name" ></input>
<input type="button" name = "Get Code" onclick="get_list()"></input>
<div id="result">
</div>
</body>
</html>
在這里,我在第一個xml文件中有兩個xml文件,我嘗試使用輸入的城市名稱通過文本框獲取國家/地區名稱,並將其存儲在第二個xml文件中的var str
中,我嘗試使用此var str
查找國家/地區代碼。
當我嘗試在第二個xpath之前發出警報時,它不會給出任何錯誤,但不會給出任何結果,然后我嘗試在第二個xpath之前發出alert(str);
請幫助我。
謝謝。
您遇到的問題是$.get
是異步的,這意味着它不會阻止執行並等待請求(xml文件的提取)完成。
在get_list
函數中,您將啟動請求(調用$.get
),然后在3行后使用xml變量( xml.evaluate(...)
)。 因為$.get
不阻塞,所以請求可能未返回,分配xml = data
回調將不會運行,因此不會定義xml
。
警報“修復”的原因是因為警報確實被阻止,這給了響應返回所需的額外時間。
該解決方案是力$.get
,以通過將同步運行async = false
選項調用(如文件 ),或者通過確保所有,使調用返回之后 ,才會執行使用返回數據的代碼(通常可以通過回調運行它,盡管還有其他方法(例如,承諾)。
注意:強制同步通常不是正確的答案,由於某種原因,默認情況下它們是異步的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.