使用jQuery循环插入HTML5数据库

时间:2010-10-14 19:19:01

标签: jquery database html5 loops rss

Javascript不是我的强项,所以请原谅我,如果这非常明显。

我正在研究一些创建本地数据库和表的代码,检索RSS提要,解析它,并将每个条目的信息添加到数据库中。

$.ajax({
    type: "GET",
    url: feedurl,
    dataType: "xml",
    success: parseXml
});

function parseXml(xml){
    $(xml).find("item").each(function(){
        title = $(this).find("title").text();
        description = $(this).find("description").text();
        postype = $(this).find("postype").text();
        category = $(this).find("category").text();
        guid = $(this).find("guid").text();
        postid = $(this).find("postid").text();
        url = $(this).find("enclosure").attr('url');

        db.transaction(function(tx) {
        tx.executeSql('INSERT INTO Posts (title, description, postype, category, guid, postid) VALUES (?,?,?,?,?,?)', [title, description,postype,category,guid,postid]);
        });

        return true;
    });
}

这是问题所在。一切都在进行插入查询。插入查询是插入数据,但每次迭代都使用相同的数据(RSS提要中的最后一项)。如果我在'title'变量之前添加alert()或将变量附加到div,它都可以正常工作。我不明白。

帮助!

2 个答案:

答案 0 :(得分:2)

交易需要花费一些时间,并且您通过在声明中遗漏var关键字来共享一些全局变量。添加var循环迭代,因为它的拥有变量集应解决问题:

function parseXml(xml){
  $(xml).find("item").each(function(){
     var $this = $(this),
         title = $this.find("title").text(),
         description = $this.find("description").text(),
         postype = $this.find("postype").text(),
         category = $this.find("category").text(),
         guid = $this.find("guid").text(),
         postid = $this.find("postid").text(),
         url = $this.find("enclosure").attr('url');

     db.transaction(function(tx) {
       tx.executeSql('INSERT INTO Posts (title, description, postype, category, guid, postid) VALUES (?,?,?,?,?,?)', [title, description,postype,category,guid,postid]);
     });
  });
}

答案 1 :(得分:1)