django后端利用HttpResponse发送dict给前端。Javascript如何在前端接收dict的内容并赋值做处理。以下限制条件:
1)HttpResponse,不用json;
2)前端不用ajax
谢谢!
http://127.0.0.1:8000/json_resp/ 向后端要JSON类型数据,并响应给前端
- 目的:前端需要JSON数据,那后端需要构造 JSON数据 响应给 前端
- Django提供了 JsonResponse 构造并响应JOSN数据
- JsonResponse 作用:
1. 将响应数据转换为JSON字符串
2. 设置响应头Content-Type为 application/json
- 案例: 通过
1. 在views.py中编写以下代码
class Response2View(View):
"""测试JSONResponse
http://127.0.0.1:8000/json_resp/
"""
def get(self,request):
# 响应数据
dict_data = {
"name":"Mr.lin",
"age":18
}
# 使用JSONResponse构造并响应JSON数据
return http.JsonResponse(dict_data)
2. 注册子路由
from django.urls import path,re_path
from . import views
# 注册子路由
urlpatterns = [
# 测试JSONResponse http://127.0.0.1:8000/json_resp/
path("json_resp/",views.Response2View.as_view()),
]
3. 运行代码,返回结果
根据提供的参考资料和问题要求,要求使用JavaScript在前端自动接收Django发送的数据并进行处理,且不能使用json进行传输,也不能使用Ajax。
基于以上要求,可以使用以下方法解决问题:
Django后端:
from django.http import HttpResponse
def my_view(request):
data = {'key1': 'value1', 'key2': 'value2'}
return HttpResponse(str(data))
这里的data是一个字典,通过str()函数将其转换为字符串进行发送。
前端JavaScript:
var xhr = new XMLHttpRequest();
xhr.open('GET', '/my_view/', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
var dataString = xhr.responseText;
var data = JSON.parse(dataString); // 将字符串转换为字典对象
// 处理接收到的数据
console.log(data);
}
}
};
xhr.send();
上面的代码中,我们发送一个GET请求给 /my_view/
,并监听readyState的变化。当readyState变为XMLHttpRequest.DONE时,表示请求完成。然后判断status是否为200,表示请求成功。获取到中后,使用JSON.parse()方法将字符串转换为字典,并可以进一步处理。
注意:这里使用JSON.parse()方法,是因为Django发送给前端的是一个字符串格式的字典数据。
这样就完成了通过JavaScript在前端自动接收Django发送的数据并进行处理的过程。