如何在XML文件中进行AJAX并解析值?
问题描述:
我有以下的AJAX和XML代码。您可以看到我尝试设置的值。我只是不知道如何去解析XML文件来设置这些变量。如何在XML文件中进行AJAX并解析值?
AJAX代码:
$.ajax({
url: 'PATH TO XML',
dataType: ($.browser.msie) ? "text" : "xml",
success: function(data) {
var context = default;
if (...) {
context = not-default;
}
}
XML代码:
<messages>
<message id="id1" context="default">
<content>
<p>Default HTML</p>
</content>
</message>
<message id="id2" context="not-default">
<content>
<p>Not Default HTML</p>
</content>
</message>
</messages>
答
这很简单:
$(yourXmlFileContents);
从这里出发,只需使用.find()
方法来选择ELEM经济需求:
$(yourXmlFileContents).find('foo[context=bar]');
注:如果您提供的文件的内容作为一个字符串jQuery的不会把它解释为XML,但作为HTML来代替。
答
$(document).ready(function() {
$.ajax({
type: "GET",
dataType: "xml",
url: "XMLFile.xml",
success: function (xml) {
$(xml).find('type').each(function() { // find all "type" tag in XML
if ($(this).text() == 'administrative_area_level_3') { // in here $(this) is our "type" tag
var result = $(this).parent().find('long_name').text(); // get result
$('#result').html('The Result is: ' + result) // write result
}
})
}
})
})
答
如果设置dataType
为“XML”,提供给您的success
功能将是一个XML文档对象,并将其传递到主jQuery函数会做你想要什么样的价值。如果你有XML作为一个字符串,而不是,你需要将它传递jQuery的parseXML()
方法(新版本1.5):
var xmlStr = "<foo>bar</foo>";
var xmlDoc = $.parseXML(xmlStr);
$xml = $(xmlDoc);
alert($xml.find("foo").text()); // Alerts "bar"
非常感谢!我没有意识到.find是所有需要的!并感谢信仰的例子! – 2011-04-10 22:28:06
请注意,如果提供的值是字符串,jQuery的$()函数不会解析XML。它假设字符串是HTML,并将该字符串指定为HTML DOM元素的'innerHTML'属性,该元素通常不适用于XML。如果提供的值是一个XML文档,一切都很好。 – 2011-04-10 23:17:07
哎呀。感谢您的信息,@Tim。 – Blender 2011-04-10 23:21:01