簡體   English   中英

嘗試獲取國家/地區代碼,但在沒有警告的情況下不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM