Ajax JavaScript传参-javascript加载本地文件

2023-03-15,,

get请求需要拼接到url里面

post请求,需要放到send方法里面,后端取值的时候,Ajax用JavaScript传输跟用postman传输,取值方式有些区别,这里做一下详细记录

传参格式{'id':1}
request.body取值,得到的结果如下:
b'{\r\n "name":"olive",\r\n "phone":18503234424,\r\n "home":"\xe6\xb1\x9f\xe8\x8b\x8f\xe7\x9c\x81"\r\n}' <class 'bytes'>
ajax post body params b'{"name":"kevin","phone":"13689897878","home":"\xe5\x90\x89\xe6\x9e\x97\xe7\x9c\x81"}' <class 'bytes'> request.data取值,postman 和ajax 反馈结果如下:
ajax <QueryDict: {'{"name":"simon","phone":"15646465585","home":"安徽省"}': ['']}> <class 'django.http.request.QueryDict'>
postman {'data': {'name': 'oven', 'phone': 18503004424, 'home': '江苏省'}} <class 'dict'>

后端是用APIView,post取值方式,request.data/request.body
当用request.body取值的时候,不论是postman还是Ajax都是byte格式,拿到byte之后,json.loads就能得到对象,可以直接拿到数据。
用request.data取值的时候,Ajax传过来的就是querydict,postman传过来的就是dict对象。这个还挺奇怪的。可能是request里面封装了什么东西导致的这样的区别
传参格式   data={‘id’:1}
当传参格式发生变化时,request.data取值,ajax传递的querydict格式发生变化,如下
<QueryDict: {'data': ['{"name":"simon","phone":"15646465585","home":"安徽省"}']}> <class 'django.http.request.QueryDict'>

request.data.get("data") 拿到的是str需要序列化转成dict对象

javascript加载本地文件

function readTextFile(file, callback) {
// file是本地文件路径
let rawFile = new XMLHttpRequest();
rawFile.overrideMimeType("application/json");
rawFile.open("GET", file, true);
rawFile.responseType = 'json'; //在onreadystatechange之前,设置返回值类型,
// 就会自动解析为json数据格式
rawFile.onreadystatechange = function () {
if (rawFile.readyState === 4 && rawFile.status === 200) {
let response_data = rawFile.response;
console.log("lmj-debug>>>", response_data);
callback(response_data);
}
};
rawFile.send(null);
}

Ajax JavaScript传参-javascript加载本地文件的相关教程结束。

《Ajax JavaScript传参-javascript加载本地文件.doc》

下载本文的Word格式文档,以方便收藏与打印。