AJAX и Django, успех AJAX не работает

На HTML-странице у меня есть таблица, в которую можно сбрасывать элементы и которая отправляется на сервер через AJAX следующим образом:

function drop(ev, el) {
  if (ev.target.tagName=="IMG") { return; }
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  el.appendChild(document.getElementById(data));

  $.ajax({
          type: 'POST',
          url: server_url + currentPath,
          data: {
            'version': data
          },
          success() {
            console.log(data, "ranked ");
          },
        });
}

на той же странице пользователи отправляют ответ с помощью кнопки, которая связана с функцией, отправляющей POST-запрос на сервер:

function NextPage(){
  answer = $("#justification").val();
        if (answer.length < 10){
            document.getElementById("warning1").innerHTML  = "Please provide an answer";
        }                                            
        else {
 
        $.ajax({
                    type: "POST",
                    url: server_url + currentPath,
                    data: {'answer' : answer},
                    success: function () {
                        window.location.href =  server_url+ nextPath;

                            }
                    });
        }
}

Я могу прочитать данные из запроса сообщения на стороне сервера (т.е. версию и ответ), и они также сохраняются, но затем я не могу перейти на следующую страницу, и нет никаких сообщений об ошибках; я заметил, что ответ теперь передается как параметр URL; не уверен, что это значит. Думаю, он застревает из-за ошибки. Я проверил CurrentPath и NextPath, и они верны. Я думаю, что проблема связана с объектом ранжирования, потому что, когда я его удалил, все работает отлично. Может ли кто-нибудь заметить, что я что-то упустил, что вызвало эту проблему? Вот мой вид:

@csrf_exempt
@login_required
def task_view(request ,visualisation, task, progress):
    participant = get_object_or_404(Participant, user=request.user)
    question_list = Question.objects.filter(complexity = 'N')

    question = question_list[0]
 
    answer, created = Answer.objects.get_or_create(participant=participant, question=question)

    ranked_visualisation = SVG.objects.filter(name=visualisation, task=task)  
    if request.method == 'POST':

        participant_answer = request.POST.get('answer')  
        current_version = request.POST.get('version') 
      
        for i in ranked_visualisation:
            ranking, created = Ranking.objects.get_or_create(participant=participant, svg=i)
    
            if ranking.svg.version == current_version:
                ranking.ranking = 10
            else:
                ranking.ranking = 20
            ranking.save()
        tasks_completed = participant.tasks_completed
        if participant_answer  and not participant_answer.isspace():
            tasks_completed = tasks_completed +1   
        else:
            tasks_completed = tasks_completed
        participant.tasks_completed = tasks_completed
        participant.save()
        answer.answer = participant_answer
        answer.save()
  

    context = {'task':task,'question': question, 'answer': answer, 'progress': progress}
  
   
    return render(request, 'study/A.html', context)

вот мои модели:

class SVG(models.Model): 
    name = models.CharField(max_length=200)
    version = models.CharField(max_length=200, default='none')
    task = models.CharField(max_length=200, default='none')
 
    def __str__(self):
        return self.name
class Ranking(models.Model):
    participant = models.ForeignKey(Participant, on_delete=models.CASCADE)
    ranking = models.IntegerField(default=0)
    svg = models.ForeignKey(SVG, on_delete=models.CASCADE)
    
class Answer(models.Model):
    participant = models.ForeignKey(Participant, on_delete=models.CASCADE)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    answer = models.TextField(blank=True, null=True)
Вернуться на верх