1

我正在做的是读取一个 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>

这是我的带有 jQ​​uery 代码的 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()"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在方法之外安慰数组.get()

4

2 回答 2

1

只需使用如下:

title = [];
description = [];

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

于 2012-04-16T17:56:44.607 回答
0

由于范围可变,请看这里。如果您想在 javascript 的任何其他函数中使用标题和描述,那么您可以在保存标题和描述(的回调函数内部$.get)后立即直接调用该 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());
    });
    call_to_your_function_with_title_and_desc(title, description)
});
于 2012-04-16T16:38:32.507 回答