使用ajax加载xml文件显示未定义

时间:2012-12-19 06:14:26

标签: javascript jquery html xml ajax

尝试使用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()'/>");

                    }
            })
        }
    });     

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

也许未定义意味着在您进行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();
 });