Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript json api和结果有错误:无法读取属性';长度';未定义的_Javascript_Jquery_Json_Ajax_Api - Fatal编程技术网

Javascript json api和结果有错误:无法读取属性';长度';未定义的

Javascript json api和结果有错误:无法读取属性';长度';未定义的,javascript,jquery,json,ajax,api,Javascript,Jquery,Json,Ajax,Api,我不断得到一些我不知道如何解决的问题。当我运行代码时,它告诉我“UncaughtTypeError:无法读取未定义的属性'length'”。经过大量搜索和阅读,我没有找到答案,它提到我需要使用for命令的值的长度,但我尝试了几种解决方案,没有一种解决了问题,这是代码: function Cast() { $.ajax({ type: "Get", url: "http://www.myapifilms.com/imdb/idIMDB?idIMDB=tt2193418&to

我不断得到一些我不知道如何解决的问题。当我运行代码时,它告诉我“UncaughtTypeError:无法读取未定义的属性'length'”。经过大量搜索和阅读,我没有找到答案,它提到我需要使用for命令的值的长度,但我尝试了几种解决方案,没有一种解决了问题,这是代码:

function Cast() {
$.ajax({
    type: "Get",
    url: "http://www.myapifilms.com/imdb/idIMDB?idIMDB=tt2193418&token=<TOKEN>&format=json&callback=?&actors=2",
    dataType: "json",
    success: function (Result)    
    {
        $.each(Result.actors, function (i, item)  {
        $('.div').append('<tr><td>' + Result.actors[i].actorName + '</td></tr>');              

        });
    },
    error: function () {
        console.log("Error, Something went wrong!");
    }
});

从我所看到的,您期望“actors”数组是“data”(即您的结果变量)的直接属性。但是,您提供的示例数据显示,在两者之间有一个“movies”数组。因此出现错误-在内部.each函数将尝试计算Result.actors的长度…但是Result.actors不存在,因此它表示它是未定义的

你有一系列的电影,所以你需要先循环这些电影,然后循环其中的演员

我使用您提供的数据和我使用的处理代码创建了一个工作示例。缺少的只是Ajax部分,我只是将数据直接放入变量中,但这并不重要

$(函数(){
var结果={
“数据”:
{
“电影”:
[
{
“头衔”:“众神之锤”,
“simplePlot”:“一个年轻人在无情的地形中旅行,寻找他失散已久的兄弟,铁质的哈坎,他的人民依靠他来恢复他们王国的秩序。”,
“演员”:
[
{
“actorName”:“Charlie Bewley”,
},
{
“actorName”:“Clive Standen”,
}
]
}
]
}
};
$.each(Result.data.movies,函数(i,movie){
$.each(movie.actors,function(j,actor){
$('.div').append(''+actor.actorName+'');
}); 
});
});

如果返回的数据与预期的一样,为什么不调试代码并反思返回的数据呢?
{
"data": {
"movies": [
  {
    "title": "Hammer of the Gods",
    "simplePlot": "A young man transforms into a brutal warrior as he travels the unforgiving landscape in search of his long lost brother, Hakan the Ferrocious, whose people are relying on him to restore order to their kingdom.",
    "actors": [
      {
        "actorName": "Charlie Bewley",
      },
      {
        "actorName": "Clive Standen",
      etc.