【发布时间】:2019-04-13 19:07:21
【问题描述】:
我正在尝试通过 ajax 将一些数据从 Javascript 发送到 Django。 这是我的 JS 代码:
var json_name = {'name': 123}
$.ajax({
method: 'POST',
url: 'my url',
contentType: "application/json",
headers: {
'Content-Type':'application/json',
'X-CSRFToken': "{{ csrf_token }}"
},
data: JSON.stringify(json_name),
success: function (data) {
//this gets called when server returns an OK response
alert("it worked!");
},
error: function (data) {
alert("it didnt work");
}
});
这是我的 Views.py:
def myview(request):
if request.is_ajax():
request_data = request.body
# data = json.loads(request.body)
print(request_data)
# print(data)
return render(request, 'candidate/view.html')
else:
return render(request, 'candidate/view.html')
我得到的输出是b''
当我尝试包含这些行时:
data = json.loads(request.body)
print(data)
我收到此错误:
TypeError: the JSON object must be str, not 'bytes'
我参考了here
有人可以帮我解决这个问题吗?如果您需要任何其他信息来解决此问题,我很乐意分享。
【问题讨论】:
-
json_name在你的 JavaScript 中包含什么?在发送请求之前,您是否检查过它是否已按预期填充? -
是的,我在发送请求之前放了console.log(json_name),输出为:
{name: 123} -
你是如何触发那个 Ajax 帖子的?是点击按钮吗?如果是这样,您是否致电
preventDefault()?显示脚本的其余部分和 html? -
你试试 data = json.loads(request.body.decode('utf-8') print(data)
标签: javascript json ajax django