TypeError:data.forEach不是一个函数 [英] TypeError: data.forEach is not a function

查看:546
本文介绍了TypeError:data.forEach不是一个函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码:

$.ajax({
    url: "some_url/",
    type: "GET",
    dataType: "json",
    success: function(data){
        console.log(data);
        data.forEach(function(element){
            console.log(element);
        });
    }
});

我得到一个错误,即每个变量均不适用于data变量.但是,当我将data登录到控制台时,我得到

I get the error that for each does not work on the data variable. However, when I log data to the console, I get

[{"model": "app.mdl", "pk": 1, "fields": {"name": "test", "rank": 1}}]

这显然是一个数组,并且是可迭代的,所以我不明白到底是什么错误.

This is clearly an array and iterable, so I don't get what exactly is wrong.

data是通过Django中的JsonResponse返回的.

data is returned via JsonResponse in Django.

推荐答案

我相信 data 是JSON字符串.由于forEach()是数组函数,并且您尝试在JSON字符串上实现它,因此会引发错误:

I believe data is a JSON string. Since forEach() is a array function and you are trying to implement it on the JSON string it throws the error:

未捕获的TypeError:data.forEach不是函数"

"Uncaught TypeError: data.forEach is not a function"

您必须使用 JSON.parse() ,然后再使用forEach():

JSON.parse()方法解析一个JSON字符串,构造该字符串描述的JavaScript值或对象.可以提供一个可选的reviver函数,以在返回结果对象之前对其进行转换.

The JSON.parse() method parses a JSON string, constructing the JavaScript value or object described by the string. An optional reviver function can be provided to perform a transformation on the resulting object before it is returned.

data = JSON.parse(data);

演示:

var data = JSON.stringify([{"model": "app.mdl", "pk": 1, "fields": {"name": "test", "rank": 1}}]);
data = JSON.parse(data);
data.forEach(function(element){
    console.log(element);
});

因此成功应该是:

success: function(data){
    data = JSON.parse(data);
    console.log(data);
    data.forEach(function(element){
        console.log(element);
    });
}

这篇关于TypeError:data.forEach不是一个函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆