2017-02-12 8 views
0

Я пытаюсь использовать больше javascript для vanilla вместо jQuery. У меня нет проблем с вызовом ajax с $ .post, но я не могу заставить его работать с vanilla javascript. Это мой вызов Ajax:Опубликовать через (ajax/javascript) в django view printing empty queryset

$(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, он печатает пустой QuerySet каждый раз.

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") 

Как подготовить данные и получить их правильно?

UPDATE:

Я был в состоянии получить эту работу. Вызов ajax остается прежним. Для того, чтобы напечатать данные на мой взгляд, Джанго, я использовал следующий код:

body_unicode = request.body.decode('utf-8') 
body = json.loads(body_unicode) 
print(body) 

Печать тела дает следующие:

{ «детали»: «Вот некоторые подробности», «название ': 'Название', 'дата': '02/18/2017', 'тип': ''} Домашнее задание

ответ

0

body_unicode = request.body.decode ('UTF-8') тела = JSON .loads (body_unicode) печать (корпус)

 Смежные вопросы

  • Нет связанных вопросов^_^