1

尝试使用 ajax 从 xml 文件加载内容时,它显示“ undefined” onload。只要我刷新页面,就会显示内容。

这是我的代码

$.ajax({
        type: "GET",
        url: "xml/FIB.xml",
        dataType: "xml",
        success: function(xml){
            var titletext=$(xml).find('Quiz').children().attr("name");
            $(".title_text").append(titletext);
            $(xml).find('question').each(function(){
                     nooffib=$(this).find("ques").length;

                        for(var a=0;a<nooffib;a++){
                        n=$(this).find('ques').eq(a).text();
                        questionarray[a]=n.replace("[blank]","<input id='"+a+"'type='text' class='blanktextbox' onkeyup='btnvisible()'/>");

                    }
            })
        }
    });     
4

2 回答 2

2

你做得对。但是您提供的网址不正确。通过更改 url 解决问题。

于 2012-12-19T07:09:09.847 回答
1

也许 undefined 意味着您在进行 ajax 调用时尚未创建您引用的 dom 元素,刷新后,将创建元素“#your_selector”。尝试在文档准备好或某个事件之后执行,例如单击按钮,换句话说,在进行 ajax 调用之前检查是否已创建#your_selector:

$("#your_selector").on("click", function(event){
//execute your ajax call
});

或者

$("#your_selector").live("click", function(){
    //execute your ajax call
 });

或者

 $(document).ready(function() {
      //execute your ajax call
 });

一个完整的例子是:

function test(){
    $.ajax({
    type: "GET",
    url: "xml/FIB.xml",
    dataType: "xml",
    success: function(xml){
        var titletext=$(xml).find('Quiz').children().attr("name");
        $(".title_text").append(titletext);
        $(xml).find('question').each(function(){
                 nooffib=$(this).find("ques").length;

                    for(var a=0;a<nooffib;a++){
                    n=$(this).find('ques').eq(a).text();
                    questionarray[a]=n.replace("[blank]","<input id='"+a+"'type='text' class='blanktextbox' onkeyup='btnvisible()'/>");

                }
        })
    }
}); 
}

 $("#your_selector").live("click", function(){
    test();
 });
于 2012-12-19T08:35:02.060 回答