返回通过jQuery解析的XML数据

时间:2012-04-16 15:43:50

标签: javascript xml jquery xml-parsing scope

我正在做的是读取XML文件并通过jQuery将数据导入我的HTML文件。

正如我在许多教程中发现的那样,我使用的是jQuery的.get()方法。除了一个问题外,它对我很有帮助!

这是XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<books>
  <book title="CSS Mastery" imageurl="images/css.jpg">
    <description>
      info goes here.
    </description>
  </book>

  <book title="Professional ASP.NET" imageurl="images/asp.jpg">
    <description>
      info goes here.
    </description>
  </book>

  <book title="Learning jQuery" imageurl="images/lj.jpg">
    <description>
      info goes here.
    </description>
  </book>
</books>

这是我的带有jQuery代码的HTML文件:

<!doctype html>
<html>
  <head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" >
      $("document").ready(function() {
        $.get("one.xml", function(d) {
          var title = [];
          var description = [];

          $(d).find("book").each(function() {
            title.push($(this).attr("title"));
            description.push($(this).find("description").text());
          });

          console.log(title);
        });
      });
    </script>
  </head>
  <body>
    // BODY contents...
  </body>
</html>

我想要做的是我想要返回标题和描述,以便我可以在其他函数中使用这些数组。根据jQuery代码我的title数组现在正在console打印,但当我尝试在title方法之外打印.get()数组时,它会显示{{1} }}

我已经尝试在函数结束时返回数组但没有运气。我不确定我的问题是否清楚,所以我粘贴了下面给出错误的代码:

"title is undefined"

在这段代码中,它是<!doctype html> <html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $("document").ready(function() { $.get("one.xml", function(d){ var title = []; var description = []; $(d).find("book").each(function() { title.push($(this).attr("title")); description.push($(this).find("description").text()); }); }); console.log(title); }); </script> </head> <body> // BODY contents... </body> </html> ,并注意我正在安排"title isn't defined方法之外的title数组。

2 个答案:

答案 0 :(得分:1)

只需使用如下:

title = [];
description = [];

如果你在变量名之前不使用var它将在全局范围内,所以你也可以在其他函数中使用这两个变量。

答案 1 :(得分:0)

由于范围可变,请查看here。如果你想使用title&amp;在javascript的任何其他功能中的描述然后您可以在保存标题&amp;之后立即直接调用该javascript函数描述($.get内部的回调函数)如下所示。

$("document").ready(function(){
$.get("one.xml", function(d){
    var title       = [];
    var description = [];
    $(d).find("book").each(function(){
        title.push($(this).attr("title"));
        description.push($(this).find("description").text());
    });
    call_to_your_function_with_title_and_desc(title, description)
});