【发布时间】:2015-11-30 17:12:00
【问题描述】:
我正在尝试从我的 Javascript 数组对象中读取名为“MediaURL”的属性。下图显示了我的数组的展开视图:
我收到此错误:
未捕获的类型错误:无法读取未定义的属性“MediaURL”
这是我的代码:
PageMethods.LoadFollowingTab(useremail, onSuccess, onFailure);
function onSuccess(val) {
var obj = JSON.parse(val); //this is the array object. I have logged it in console and it's not empty
obj.forEach(function (value) {
img1.src = value.Activities[0].MediaURL;
//I am setting the MediaURL of the first element of the Array as the image source
});
}
这将返回该错误。我读错数组了吗?你觉得问题出在哪里?
编辑
我在 ASP.NET 的 C# 代码中使用 JavaScriptSerializer 将结果传递给 json:
[WebMethod]
public static string LoadFollowingTab(string email)
{
string json = "";
List<String> following = PBC.LoadFollowingTab(email);
var jsonSerialiser = new JavaScriptSerializer();
json = jsonSerialiser.Serialize(following);
return json;
}
遗憾的是,生成的字符串很长,我不能在这里发布。我认为我发布的数组视图就足够了吗? :)
【问题讨论】:
-
可能是,您正在尝试获取 MediaURL,在您的 obj 来自异步操作之前,您可以发布更多代码吗?部分初始化
obj。请注意,当您在控制台中展开它时,chrome 控制台评估对象,而不是在控制台中实际打印时。 -
实际上这是不可能的,因为这发生在 onSuccess 函数内部。请检查我的编辑@Andrey
-
能否请您发布您的返回 JSON 信息? obj 的内容。
-
是否所有六个数组元素都有一个至少包含一个元素的
Activities数组? -
@Grimbode 什么魔法!有用。请将其发布为答案并请解释一下:)
标签: javascript html arrays json