首次使用后无法使用JQUERY html()或append()访问XML数据

时间:2011-06-23 23:40:06

标签: html xml jquery

我正在设置一个网站的循环引号,而且在我已经使用过一次之后我就无法重新加载数据。

我已经设置了一个包含大量数据的XML文件。数据包括作者,作者和作者的职称(引用,作者,标题)。

然后我有一个jQuery .ajax调用并将其存储在变量xmlData中。

然后使用xmlData将html附加或添加到指定的id标记。

我正在使用setInterval()来遍历xml数据。

这个想法是在循环中经历它:1 | 2 | 3 | 1 | 2 | 3等等。但当它返回时,数据被附加到ID之后,它就不再出现了。就像从XML文件中删除了数据一样。

任何帮助将不胜感激。代码如下,以及我正在进行测试的网站URL。

<script language="javascript" type="text/javascript">

var xmlData;
var xmlFAILdata;
var nextE = 0;  
var ttlE;
var quote;
var author;
var title;

$(function(){

 $.ajax({
    type: "GET",
    url:"/wp-content/themes/privilegeofpersecution/endorsements.xml",
    data: "",
    dataType:"xml",
    async: false,
    success: function(xml){
        //alert("XML SUCCESS!");
        xmlData = xml;} ,
    error: function(xmlFAIL){
        alert("XML FAIL");
        }
        });

ttlE = $(xmlData).find('endorsement').length;

//Since .length return the number starting at 1 rather than 0 subtract 1 for accuracy
ttlE -= 1;


//On pageload, load in the first Endorsement into variables
quote = $(xmlData).find('endorsement').eq(0).children('quote');
author =$(xmlData).find('endorsement').eq(0).children('author');
title =$(xmlData).find('endorsement').eq(0).children('title');

//Append variables to id containers
$("#quote").html(quote);
$("#author").html(author);
$("#title").html(title);

//executes the function "next" which places the next endorsement
setInterval("next()", 5000);

});

function next(){
    console.log('Next Function Started');

    if(nextE >= ttlE){
        nextE = 0;
        }
    else{
    nextE++;
    }

    console.log('nextE = ' + nextE);

    quote = $(xmlData).find('endorsement').eq(nextE).children('quote');
    author =$(xmlData).find('endorsement').eq(nextE).children('author');
    title =$(xmlData).find('endorsement').eq(nextE).children('title');

    $("#quote").html(quote);
    $("#author").html(author);
    $("#title").html(title);

}
</script>

以下是网站:http://privilegeofpersecution.com/wp-content/themes/privilegeofpersecution/xmltest.html

1 个答案:

答案 0 :(得分:0)

我能够通过在变量赋值中添加.clone()来解决问题。这样我就不只是将XML对象放在DOM中并覆盖它。相反,我每次需要时都会从XML中复制数据,以便保持原状。

quote = $(xmlData).find('endorsement').eq(0).children('quote').clone();
author =$(xmlData).find('endorsement').eq(0).children('author').clone();
title =$(xmlData).find('endorsement').eq(0).children('title').clone();