Javascript”;无效的调用对象“;xml错误
Javascript "Invalid calling object" error with xml
我想在用户键入文本时显示一个列表(如自动完成)。
我加载一个带有列表的xml,当用户键入文本时,一个javascript函数循环到xml中查找匹配项。
一切正常,除了在Internet Explorer上,它有时会显示此错误:"SCRIPT65535:无效的调用对象"。
- 我第一次调用js函数以循环到xml中总是有效的,但如果我等待5秒钟再调用它,它会显示错误
- 如果我等待不到1秒,它不会显示错误
这可能是因为在循环中我调用了getAttribute()方法。。。当我删除它时没有错误。
谢谢你的帮助!
这是代码:
Ajax加载:
var ajax = {};
ajax.getXMLHttpRequest = function(){
var xhr = null;
if(window.XMLHttpRequest || window.ActiveXObject){
if(window.ActiveXObject){
try{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else xhr = new XMLHttpRequest();
}
else return null;
return xhr;
};
ajax.loadFile = function(callback){
var xhr = ajax.getXMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)){
callback(xhr.responseXML);
xhr = null;
}
};
xhr.open("GET", 'file.xml', true);
xhr.setRequestHeader("Content-Type", "text/xml");
xhr.send(null);
};
ajax.loadFile(callback);
回调功能:
var xml_nodes = '';
function callback(response){
xml_nodes = response.getElementsByTagName('node');
}
然后鼠标点击或其他触发此功能:
function buttonClick(){
for(var i=0; i<xml_nodes.length; i++){
var attr = xml_nodes[i].getAttribute('attr');
}
}
这是一个仅在Internet Explorer中发生的缓存问题。callback(response)
函数将节点元素分配给xml_nodes
变量。这些节点是response
的一部分,也是XMLHttpRequest
的一部分
buttonClick
函数将迭代连接到已处理的XMLHttpRequest的xml_nodes
。这些被丢弃是因为您没有指向它的指针,因此是无效对象。
一个简单的解决方法是将您的请求缓存在一个数组中。然而,这将导致大量不需要的内存使用。您应该根据xml响应创建对象并存储它们。这些新对象没有任何指向responseXML的指针,因此是有效的对象。
希望这有帮助,有同样的问题:)
相关文章:
- Windows 8 Javascript应用程序XML对象
- Spring MVC:如何在Javascript中访问modelAndView XML对象
- 如何上传一个XML对象并用Perl将其保存在服务器上
- 使用Javascript分析XML对象数组中的数据
- 如何在JQUERY中从HTML文档中获取XML对象
- 如何将XML对象与jQuery/JavaScript合并
- 从 XML 对象检索数据
- 如何在 Jquery 中解析 XML 对象
- Mirth 连接错误:“..不是 XML 对象“时尝试从数组输出文本
- 加载xml对象时出现意外的标记ILLEGAL
- 使用xml对象获取xml:id属性
- 如何清理XML对象以避免“序言中不允许的内容”;错误
- 如何防止jQuery插入'xmlns'属性在XML对象中
- Htmlparser2转换XML对象为字符串
- 从jQuery/ xml对象获取原始xml
- 大型javascript需要加载并转换为xml对象
- 如何在jquery中将字符串转换为xml对象
- 如何将XML对象插入到无序列表中
- JavaScript 中 XML 对象的类型是什么?
- 在XML对象上没有find()方法