通过 AJAX 访问从 Django Rest Framework 返回的数组中的项目时获取“未定义”
Posted
技术标签:
【中文标题】通过 AJAX 访问从 Django Rest Framework 返回的数组中的项目时获取“未定义”【英文标题】:Getting 'undefined' when accessing item in an array returned from Django Rest Framework via AJAX 【发布时间】:2021-05-21 01:25:08 【问题描述】:我正在尝试访问从 AJAX GET 请求返回到 Django Rest Framework 的数组中的数据。但是,我不断收到undefined
,我可以控制台记录数据并查看我试图用我的索引号定位的目标,但我没有运气。我也尝试过使用JSON.parse()
,但这只是抛出了一个错误。
console.log 打印的内容如下:https://ibb.co/9y8CBw9
这是我为 javascript 准备的内容:
document.querySelector('#userLists').addEventListener('click', function(event)
if (event.target.dataset.name)
var listname = event.target.dataset.name
console.log(listname);
getTableData()
)
const getTableData = function()
$.ajax(
type: 'GET',
url: '/api/uservenue/',
data: ,
success: function (data)
data.forEach(item =>
console.log(item.venue)
)
fillTable(data)
);
;
function fillTable(data)
console.log(data)
const table = document.getElementById("dashboardTableBody");
let row = table.insertRow();
let name = row.insertCell(0);
name.innerhtml = data[0][1];
这是我来自 DRF 的序列化程序:
class mapCafesSerializer(serializers.ModelSerializer):
class Meta:
model = mapCafes
fields = ['id', 'cafe_name', 'cafe_address', 'description']
class UserVenueSerializer(serializers.ModelSerializer):
venue = mapCafesSerializer()
class Meta:
model = UserVenue
fields = ['id', 'list', 'venue']
这些是相关的模型:
class UserVenue(models.Model):
venue = models.ForeignKey(mapCafes, on_delete=models.PROTECT)
list = models.ForeignKey(UserList, on_delete=models.PROTECT)
class mapCafes(models.Model):
id = models.BigAutoField(primary_key=True)
cafe_name = models.CharField(max_length=200)
cafe_address = models.CharField(max_length=200)
cafe_long = models.FloatField()
cafe_lat = models.FloatField()
geolocation = models.PointField(geography=True, blank=True, null=True)
venue_type = models.CharField(max_length=200)
source = models.CharField(max_length=200)
description = models.CharField(max_length=1000)
class Meta:
managed = False
db_table = 'a_cafes'
def __str__(self):
return self.cafe_name
【问题讨论】:
你从哪里得到undefined
?可能代码在调用getTableData
之后但在来自服务器的响应触发对AJAX 成功函数的回调之前尝试访问响应数据。
你好。我在 HTML 中未定义。 name.innerHTML = 数据[0][1];
【参考方案1】:
尝试替换
name.innerHTML = data[0][1];
与
name.innerHTML = data[0].venue.cafe_name;
控制台日志图像显示data
是一个一维数组,其中对象条目的形式为id, list, venue
。将对象条目的属性 1
当作数组查找会返回 undefined
。
【讨论】:
以上是关于通过 AJAX 访问从 Django Rest Framework 返回的数组中的项目时获取“未定义”的主要内容,如果未能解决你的问题,请参考以下文章
如何从 django rest 框架访问 jwt 令牌到 Angular 前端
每当我通过 ajax 调用它时,Django Rest 框架会用 AnonymousUser 替换我当前经过身份验证的用户吗?
是否可以在 Django Rest Framework 中的 ajax 请求期间追溯 403 错误?