我正在尝试使用ajax从数据库中获取一些数据,并对其进行迭代。由于某些原因,我得到一个长字符串,而不是可以迭代的对象。
views.py
def postHog(request):
if request.method == 'GET':
pk = request.GET['megama']
megama = Speciality.objects.get(id=pk)
hog = Submain.objects.filter(speciality=megama)
hogback = []
for i in hog:
if (i.image):
hogback.append({"name": i.name, "desc":
i.desc, "image": i.image.url})
else:
hogback.append({"name": i.name, "desc": i.desc, "image": "None"})
response_data=json.dumps(hogback,ensure_ascii=False)
return JsonResponse({'hogback': response_data}, status=200,content_type="application/json")urls.py
path(r'megamas/', views.postHog, name="post_hog"),myjs.js
$(".btnsmain").click(function () {
$.ajax({
type: 'GET',
url: "/megamas",
data:{
megama:$("#id_main").val()
},
success:function (data) {
$.each(data.hogback, function (index,element) {
alert(index,element.name);
});
},
error: function (data) {
alert("not good");
}
})
});如果我使用警告(Hogback),我会得到"[“,这就像我得到的是返回字符串,而不是列表和dict对象。
谢谢!
发布于 2020-04-29 06:38:11
json.dumps()返回一个json格式的字符串。
JsonResponse将data作为python对象,因此不需要手动将数据转换为json。(见文档)
因此,以下几点应能奏效:
return JsonResponse({'hogback': hogback}, status=200, content_type="application/json")发布于 2020-04-29 06:40:46
只需解析javascript JSON.parse的方法,该方法识别字符串,然后在JSON对象中转换
您需要像这样编辑ajax的成功方法
success:function (data) {
const jsonData = JSON.parse(data)
alert(jsonData)
console.log(jsonData[0])
},也许你能理解我说的话,我也给了他们链接看他们- 在这里输入链接描述
如果你的问题解决了,那就告诉我
https://stackoverflow.com/questions/61495524
复制相似问题