从json动态获取数据时的TypeError

时间:2016-04-20 11:00:36

标签: javascript jquery json

var testjson = [{"Student-Records":[{"Name":"John",}]}]

var sturec= names[k];

//    where names[k] is Student-Records
/* Proc 1 */  var temporaryjsondata = testjson [0][sturec];
/* Proc 2 */  var temporaryjsondata = testjson [0]["'"+sturec+"'"];
/* Proc 3 * Static data */ var temporaryjsondata = testjson [0]['Student-Records'];

alert(JSON.stringify(temporaryjsondata));

虽然proc 3是静态的,但工作正常但没有错误,但我需要通过sturec等动态值对其进行过滤。以下proc 1 and 2提供适当数据的警报,但随后给出以下错误:

在Mozilla:

TypeError: temporaryjsondata is undefined

在chrome:

Uncaught TypeError: Cannot read property '0' of undefined

如果上述方法中存在任何错误以及如何动态获取数据,任何人都可以通知我。这是fiddle。虽然上面的例子在小提琴中工作得很好但在我的应用程序代码中失败了。有什么可能导致上述错误。

1 个答案:

答案 0 :(得分:2)

也许jsFiddle比你的严格客户更宽容?

var testjson = [{"Student-Records":[{"Name":"John",}]}]

“John”之后有一个逗号,没有任何意义。

var sturec= names[k];

- “名称”无法定义 - 就像“k”一样。

//    where names[k] is Student-Records
/* Proc 1 */  var temporaryjsondata = testjson [0][sturec];
/* Proc 2 */  var temporaryjsondata = testjson [0]["'"+sturec+"'"];
/* Proc 3 * Static data */ var temporaryjsondata = testjson [0]['Student-Records'];

- “sturec”无处定义(分别是错误的) - 请删除testjson[0]之间的空格 - ["'"+sturec+"'"]没有任何意义。要么sturec已经包含字符串,要么(如果它包含数字,但绝对需要作为字符串),请使用[""+sturec]

请提供实际代码,以便我们能够为您提供进一步的帮助。

由于您似乎只提供了更复杂的代码的部分内容,并且错误消息并不真正适合您提供的代码:您确定警报在仍在范围内时会尝试获取temporaryjsondata吗?