未捕获的TypeError:无法读取属性' indexOf'未定义的

时间:2014-07-09 10:19:53

标签: javascript jquery indexof uncaught-typeerror

我正在尝试使用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/

任何帮助将不胜感激。 感谢

0 个答案:

没有答案