Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery根据其中一个元素的值查找XML元素';孩子们_Javascript_Jquery - Fatal编程技术网

Javascript Jquery根据其中一个元素的值查找XML元素';孩子们

Javascript Jquery根据其中一个元素的值查找XML元素';孩子们,javascript,jquery,Javascript,Jquery,我正在开发一个简单的XML电话簿应用程序来学习JQuery,但我不知道如何执行以下操作: 当用户在文本框中输入联系人的名字时,我希望找到此人的完整记录。XML如下所示: <phonebook> <person> <number> 555-5555</number> <first_name>Evelyn</first_name> <last_name>Remington</last_n

我正在开发一个简单的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>
var myXML;
function searchXML(){
  $.ajax({
     type:"GET",
     url: "phonebook.xml",
     dataType: "xml",
     success: function(xml){myXML = $("xml").find("#firstNameBox").val())}
  });
 }

我想要它做的是返回整个
元素,这样我就可以遍历并显示那个人的所有信息。任何帮助都将不胜感激。

嗯,我不确定您希望如何选择
或如何显示结果,但本例将查找
伊芙琳
,并将相关信息放入变量中

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();

编辑:

当您说要“返回”代码时,请注意不能像在常规函数中那样简单地返回它。您的其余代码可能在收到AJAX响应之前已经执行完毕,因此任何试图访问
myXML
变量中的
的尝试都将导致
未定义的值

相反,您需要在
success
回调中执行您想要的任何操作,或者您需要将其放置在另一个函数中,并从
success
回调中调用该函数

我举的例子在里面起作用

不过,我还是不确定你是如何选择那个人的。如果您想对每一个进行操作,那么您可以在一个循环中进行操作。例如,您可以使用:

$(xml).find("person").each(function() {
    // do your processing...
});

您是说您只想使用具有特定名字的
?选择你想要的人还有其他标准吗?做同样的事情有什么好的建议,但要根据两个孩子的价值观找到一个“人”?假设你想找到一个人,其中
firstname==a
lastname==b