首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用AJAX实现javascript中的xml解析器

用AJAX实现javascript中的xml解析器
EN

Stack Overflow用户
提问于 2014-02-23 15:54:39
回答 1查看 171关注 0票数 0

我正在创建一个web表单,我想要做的是,当有人从选择列表中选择“”字段时,"*city lis*t“由AJAX调用填充,

还如何匹配和只获取特定州的城市()

以下是html代码

代码语言:javascript
复制
<label for="state">Select State</label>
                    <select id="state">
                        <option ></option>
                        <option value="virginia">virginia</option>
                        <option value="south dakota">south dakota</option>
                    </select>

将由AJAX填充的城市列表:

代码语言:javascript
复制
 <label for="city">Select State</label>
                    <select id="city">
                        <option ></option>
                    </select>

XML代码:

代码语言:javascript
复制
  <?xml version="1.0"?>
 <states>
       <state>
        <name>virginia</name>
           <city>virginia city-1</city>
           <city>virginia city-2</city>
       </state>
       <state>

       <name>south dakota</name>
            <city>south dakota city-1</city>
           <city>south dakota city-2</city>
       </state>

AJAX代码:

代码语言:javascript
复制
  var request;

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



 $("#state").change(function(){
var data=$(this).val();

//url='formProcessor.php?data='+data;
url='city.xml';
request.open('GET',url);

request.onreadystatechange=function(){

    if((request.readyState==4) && (request.status==200)){

        var output;
        var temp
        var items=request.responseXML.getElementsByTagName('state');

        for(var i=0; i < items.length; i++){
            //not sure how to Handel the code and match the state and fetch related cities.
            if(items[i].nodeValue==data){
            temp=items[i];
            output=temp.childNodes;

            }

        }

    $('form').append(items);//just using this for testing output
    console.log(items);//just using this for testing output
    }

}

request.send();

});

有没有任何在线来源,我可以得到州和城市名单,我可以分析?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-23 17:09:25

您可以考虑使用xml,并且假设加载jQuery数据是一个异步调用,并采取步骤,但是由于您将所有数据都放在一个xml中,所以应该只加载一次:

代码语言:javascript
复制
var xmlData = null;
//this is here just to be used as a sample for your real xml
var sampleXmlData = '<?xml version="1.0"?><states>';
sampleXmlData += '<state><name>virginia</name><city>virginia city-1</city ><city>virginia city - 2</city></state>';
sampleXmlData += '<state><name>south dakota</name><city>south dakota city-1</city><city> south dakota city - 2</city></state>';
sampleXmlData += '</states>';

function loadCombo(state) {
    var city = $("#city");
    city.empty();
    city.append("<option></option>");
    $(xmlData).find("state").filter(function(){
        return (jQuery.trim($(this).find("name").text()) == state);
    }).find("city").each(function(){
        var cityName = jQuery.trim($(this).text());
        city.append("<option value='" + cityName + "'>" +
                    cityName + "</option>");
    });
}
$("#state").change(function () {
    var state = $(this).val();
    var url = 'city.xml';
    if (!xmlData) {
        //you should put your url instead of /
        $.get("/").then(function (data, status) {
            if (status == "success") {
                //you should use this line:
                //xmlData = data;
                //this line is here just as a sample
                xmlData = sampleXmlData;
            }
            loadCombo(state);
        });
    }
    else{
        loadCombo(state);
    }
});

这是你的工作演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21970559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档