我正在尝试使用JavaScript来解析位于我服务器上的xml文件。此代码段是从较大的代码块中提取的,这些代码块有时会加载而不会出现错误。有时它会很好,这取决于页面的某些部分需要加载多长时间。我删除了所有无关的代码&将代码简化为问题部分,尝试找出我做错了什么。 test.js中的函数:
var XMLFile = jQuery.get('test.xml', function (data) {
return data;
});
function getRoomDetails(text) {
var pos = 0;
var endPos = 0;
pos = text.indexOf('panorama id=', pos) + 13;
endPos = text.indexOf('</panorama>', pos);
Return [pos, endPos];
}
包含在HTML文件头部的js文件
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/test.js"></script>
以下是HTML文件正文中使用的代码
<script>
var temp = getRoomDetails(XMLFile.responseText);
alert(temp);
</script>
我在indexOf
的第一次调用时收到错误(上面代码片段中test.js的第9行)。
在Chrome中,错误显示为:Uncaught TypeError: Cannot read property 'indexOf' of undefined
。
在Firefox中,它显示为:TypeError: text is undefined
加载页面后,如果我在JavaScript控制台中输入var temp = getRoomDetails(XMLFile.responseText);
,它可以正常运行我得到了预期的结果。
我想当页面加载时,test.xml尚未被读取,并且在getRoomDetails
函数中未定义。我不知道如何解决这个问题。
此处有一个更完整的代码版本:http://jsfiddle.net/anishbenji/NLYnE/
任何帮助将不胜感激。 感谢