Javascript TypeError:data.forEach不是函数

Javascript TypeError:data.forEach不是函数,javascript,jquery,html,django,Javascript,Jquery,Html,Django,这是我的代码: $.ajax({ url: "some_url/", type: "GET", dataType: "json", success: function(data){ console.log(data); data.forEach(function(element){ console.log(element); }); } }); 我得到的错误是,for each在数据

这是我的代码:

$.ajax({
    url: "some_url/",
    type: "GET",
    dataType: "json",
    success: function(data){
        console.log(data);
        data.forEach(function(element){
            console.log(element);
        });
    }
});
我得到的错误是,for each在
数据上不起作用。但是,当我将
数据
记录到控制台时

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

这显然是一个数组,并且是可编辑的,所以我不知道到底哪里出了问题

编辑:
data
通过Django中的
JsonResponse
返回。

我相信数据是一个JSON字符串。由于
forEach()
是一个数组函数,您试图在JSON字符串上实现它,因此会抛出错误:

“未捕获类型错误:data.forEach不是函数”

在使用
forEach()
之前,必须使用解析数据:

JSON.parse()
方法解析JSON字符串,构造字符串所描述的JavaScript值或对象。可以提供可选的恢复器函数,以便在返回结果对象之前对其执行转换

演示:
var data=JSON.stringify([{“model”:“app.mdl”,“pk”:1,“fields”:{“name”:“test”,“rank”:1}]);
data=JSON.parse(数据);
data.forEach(函数(元素){
控制台日志(元素);

});只需检查数据是否为JSON字符串

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

如果是,则必须对其执行JSON.parse(数据)和forEach。

只需检查它是字符串还是JSON数组

if(typeof(data) === "string"){data = JSON.parse(data)}
 data.forEach(function(element){
            console.log(element);
        });

这种情况下,
数据
响应看起来像一个数组,但它是一个字符串。如果您可以访问所连接的API,您可以确保它发送的响应是一个数组,但如果不是简单地使用
JSON.parse()
解析
数据
响应,则应该使用
JSON.parse()
进行解析。

success: function(data){
        data = JSON.parse(data);
        console.log(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);
        });