responseXML 显示为空,即使 xhr 对象将其显示为 set
responseXML displaying as null even though xhr object shows it as set
我有以下代码最终填充一个表。此时,我创建了一个 XHR,加载时它将调用我的员工集合进程 XML 函数
EmployeeCollection.prototype.fetchXML = function(path, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", path, true);
xhr.send();
xhr.onload = this.processXML(xhr, callback);
};
EmployeeCollection.prototype.processXML = function(xhr, callback) {
console.log(xhr); // this shows an XHR object with
// readyState: 4 and responseXML: document
console.log(xhr.responseXML); // null
}
我的问题是;如果我访问 xhr 对象并在控制台中展开节点,为什么我可以将 responseXML 视为文档,但当我尝试直接访问 xhr 对象的此属性时 - 我不能?
您遇到的问题是您正在调用该方法并将其返回的内容分配给 onload。因此,当您"同化"时,它会在 Ajax 调用实际加载之前调用该方法。
xhr.onload = this.processXML(xhr, callback);
它应该是
xhr.onload = this.processXML.bind(this, xhr, callback);
或
var that = this;
xhr.onload = function () { that.processXML(xhr, callback); };
原因可能是在浏览器开发人员工具中展开对象值时对对象值的评估。例如,目前您在console.log
中null
- 它在执行时已记录。
但是,在控制台窗口中展开值时(稍后)会评估提供document
值的第二个console.log
。
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Vue.js $set不更新显示
- responseXML 显示为空,即使 xhr 对象将其显示为 set
- Woocommerce分类显示"Cannot set property 'onchange'n
- Set datetime显示错误的日期