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


在镀铬中:

Uncaught TypeError: Cannot read property '0' of undefined


任何人都可以让我知道上述方法是否存在错误以及如何动态获取数据。这是fiddle。尽管上面的示例在拨弄中工作得很好,但是在我的应用程序代码中却失败了。是什么原因可能导致上述错误。

最佳答案

也许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吗?

09-19 13:31