0

我在 JavaScript 中进行了一个简单的 ajax 调用,它返回一个 ID,然后我需要进行另一个 ajax 调用来获取一个 XML 文件,该文件包含所有 ID 以及相关的描述性字符串作为 XML 的一部分。

ID 的描述以这种格式返回:

<Category>
  <Id>1</Id>
  <Descriptor>Accounts</Descriptor>
</Category>
<Category>
  <Id>2</Id>
  <Descriptor>Marketing</Descriptor>
</Category>
<Category>
  <Id>3</Id>
  <Descriptor>HR</Descriptor>
</Category>
etc...

如何根据这个 XML 查找 ID 值并使用 JavaScript 返回描述符字符串?

4

3 回答 3

2

使用 jQuery,您可以:

var xml = $.ajax({......}); //your xml
var numb = $.ajax({......}); //returns 1,2 or 3 etc...

var descriptor = $('id', xml).filter(function() {
    return $(this).text() == numb; //filter elements based on text in the id tag
}).siblings('Descriptor').text();

jQuery 会将其视为 html,但它似乎都可以正常工作。

小提琴

于 2012-05-09T23:26:54.907 回答
1

类似这个功能的东西应该可以工作:

function searchXmlForId(id) {
    var searchDescriptor = "";

    $.ajax({
        type: "GET",
        url: "your/xml/file.xml",
        dataType: "xml",
        success: function(xml) {
            $(xml).find('Category').each(function(){
                if (curId == $(this).find('Id').text()) return $(this).find('Descriptor').text();
            });   
        }
    });

    return false;
}

然后你这样称呼它:

var myDescriptorFromId = searchXmlForId(1);

>> "Accounts"
于 2012-05-09T23:26:41.450 回答
1

人们会因为在这里建议正则表达式而跳下喉咙,但我认为这可能是最快的解决方案(对于仇恨者,我不是在这里解析 xml,也无意 - 我只是通过一个文本模式):

var matches = xml.match(new RegExp('<Id>' + id + '<\\/Id>[\\s\\S]*?<Descriptor>(.*?)</Descriptor>', 'i'))
var description = matches ? matches[1] : null;
于 2012-05-09T23:26:58.747 回答