我对JS / jQuery只有中等的经验。我正在尝试解析从IIS检索到的XML对象,这里有一些粗略描述我问题的伪代码:
//accepts an XML Object
function dataFromAjax(object) {
var x; // this is an int used to ID the object
var y;
var z;
var arr = [];
var __data = this;
var xmlObject = object;
function readDataFromXMLObject() {
__data.x = $(xmlObject).find("X").text();
__data.y = $(xmlObject).find("Y").text();
__data.z = $(xmlObject).find("Z").text();
testArr = $(xmlObject).find("TestArrInfo").text().split(",");
if(testArr[0] != null)
__data.arr.push(testArr[0]);
// ...
}
function storeData() {
sessionStorage.setItem(__data.x, JSON.stringify(__data));
}
readDataFromXMLObject();
storeData();
}
在控制台中,它在尝试解析arr []时给出了以下错误:
Uncaught TypeError: Cannot read property 'push' of undefined
当我尝试手动输入类似sessionStorage.getItem(123)
(带引号和不带引号)的内容时,它也会返回null。
为了测试这些值,我尝试了console.log(xmlObject)
和console.log(__data.x)
进行调试,这些工作正常并分别给了我XML对象和x值。不确定为什么数组不工作或整个对象为什么不保存。我非常感谢任何提示。
答案 0 :(得分:2)
在此范围内,您可以直接访问arr
:
arr.push(testArr[0])
您的this
上下文可能指向window
个对象。 window.arr
未定义。
了解JS中的this
上下文:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this