【发布时间】:2017-06-30 17:57:29
【问题描述】:
如果使用 jquery,我正在尝试使用更多的原生 javascript。我使用 $.post 进行 ajax 调用没有问题,但我似乎无法让它与 vanilla javascript 一起使用。这是我的 ajax 调用:
$(document).ready(function () {
$('#addAssignment').click(function () {
$('#addAssignmentModal').modal('toggle');
});
$('#submitAssignment').click(function () {
if(checkModal()){
var assignment = {
title: $('#newAssignmentTitle').val(),
type: $('#assignmentSelection').val(),
date: $('#newAssignmentDate').val(),
details: $('#newAssignmentDetails').val()
}
console.log(assignment);
submitAssignment(assignment);
}
});
});
function submitAssignment(assignment) {
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//Do stuff
}
};
request.open("POST", '/data/api/create-assignment/', true);
request.setRequestHeader('X-CSRFToken', cookies['csrftoken']);
//assignment is equal to: {title: "Title", type: "Homework", date: "02/18/2017", details: "Detais"}
request.send(JSON.stringify(assignment));
}
当我尝试在我的 Djano 视图中打印出数据时,它每次都会打印出一个空的查询集。
def createAssignment(request):
if request.method == 'POST':
print(request.POST) # this prints an empty queryset
# assignment = Assignments()
# assignment = request.POST.get('assignment')
# assignment.save()
data = {}
data['status'] = "Success"
return HttpResponse(json.dumps(data), content_type="application/json")
else:
data = {}
data['status'] = "Data must be sent via POST"
return HttpResponse(json.dumps(data), content_type="application/json")
如何准备我的数据并正确接收?
更新:
我能够得到这个工作。 ajax 调用保持不变。为了在我的 django 视图中打印数据,我使用了以下代码:
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
print(body)
打印正文给出以下内容:
{'details': 'Here are some details', 'title': 'Title', 'date': '02/18/2017', 'type': 'Homework'}
【问题讨论】:
标签: javascript ajax django post xmlhttprequest