我正在开发一个简单的 XML 电话簿应用程序来学习 JQuery,但我不知道如何执行以下操作:
当用户在文本框中输入联系人的名字时,我想查找该人的完整记录。 XML 看起来像这样:
<phonebook>
<person>
<number> 555-5555</number>
<first_name>Evelyn</first_name>
<last_name>Remington</last_name>
<address>Edge of the Abyss</address>
<image>path/to/image</image>
</person>
<person>
<number>+34 1 6444 333 2223230</number>
<first_name>Max</first_name>
<last_name>Muscle</last_name>
<address>Mining Belt</address>
<image>path/to/image</image>
</person>
</phonebook>
我用 jQuery 能做的最好的事情是这样的:
var myXML;
function searchXML(){
$.ajax({
type:"GET",
url: "phonebook.xml",
dataType: "xml",
success: function(xml){myXML = $("xml").find("#firstNameBox").val())}
});
}
我想要它做的是返回整个<person>
元素,以便我可以迭代并显示该人的所有信息。任何帮助,将不胜感激。
嗯,我不知道你想如何选择<person>
或者你想如何显示结果,但是这个例子会发现Evelyn
,并将相关信息放入变量中;
var myXML;
function searchXML(){
$.ajax({
type:"GET",
url: "phonebook.xml",
dataType: "xml",
success: function(xml){
// Filter Evelyn out of the bunch
myXML = $(xml).find("person").filter(function() {
return $(this).find('first_name').text() == "Evelyn";
});
// Store a string with Evelyn's info in the display variable
var display = myXML.children().map(function() {
return this.tagName + '=' + $(this).text();
}).get().join(' ');
// alert the result
alert(display);
}
});
}
searchXML();
EDIT:
当你说你想“归还”时<person>
,请注意,您不能像在常规函数中那样简单地返回它。其余代码可能在收到 AJAX 响应之前已完成执行,因此任何访问 AJAX 响应的尝试都可能已完成<person>
in the myXML
变量将产生一个值undefined
.
相反,您需要执行您想要的任何操作inside the success
回调,或者您需要将其放置在另一个函数中,然后从内部调用该函数success
打回来。
我给出的例子做了里面的工作。
不过,我仍然不确定您要如何选择哪个人。如果您想对每个操作进行操作,那么您将循环执行此操作。例如,您可以使用:
$(xml).find("person").each(function() {
// do your processing...
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)