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);
});