2013-05-27 53 views
0

我有这样的代码:使用XML文件内容

$.ajax({ 
    url: "lang_files/" + window.localStorage.language + ".xml", 
    dataType: 'xml', 
    success: function(data) { 
     var xml_node = $("resources", data); 
     $("#index_intro").text(xml_node.find('string[name="index_intro"]').text()); 
    }, 
    error: function(data) { 
     console.log("Error loading XML data"); 
    } 
}); 

它工作正常,为.text()设置正确使用从我的XML文件中的信息,我现在想能够使用XML文件在我的应用程序,而不仅仅是成功调用之内,所以我所做的:

var xml_node; 

$.ajax({ 
    url: "lang_files/" + window.localStorage.language + ".xml", 
    dataType: 'xml', 
    success: function(data) { 
     xml_node = $("resources", data); 
    }, 
    error: function(data) { 
     console.log("Error loading XML data"); 
    } 
}); 

$("#index_intro").text(xml_node.find('string[name="index_intro"]').text()); 

这不,虽然工作,我想知道为什么。

回答

2

这是因为ajax是异步的,所以在你调用xml_node的时候,它仍然是未定义的。试试这个:

$.ajax({ 
    url: "lang_files/" + window.localStorage.language + ".xml", 
    dataType: 'xml', 
    success: function(data) { 
     setIndexIntro($("resources", data)); 
    }, 
    error: function(data) { 
     console.log("Error loading XML data"); 
    } 
}); 

function setIndexIntro(xml_node) 
{ 
    $("#index_intro").text(xml_node.find('string[name="index_intro"]').text()); 
} 
+0

我看,谢谢你的信息。这很好,必须探索更好的方式来使用我的应用程序中的所有数据(indexintro仅限于一个页面)。 –