我的views.py 无法响应我的AJAX 调用

Posted

技术标签:

【中文标题】我的views.py 无法响应我的AJAX 调用【英文标题】:I can't get response from my views.py to my AJAX call 【发布时间】:2021-10-24 06:04:03 【问题描述】:

我正在从事一个个人项目,在一个部分中,我在屏幕上显示卡片,但卡片一次只显示一张。我需要进行 Ajax 调用,它运行良好,但我唯一无法得到的就是我认为的响应。

这是我的 Ajax 调用:

$('#accept').on('click', function() 
        var accept_value = $('#accept').val();
        $.ajax(
          url: '/cards/',
          type: 'POST',
          data: 'duo_status': accept_value,
          headers:  "X-CSRFToken": " csrf_token " ,

          success: function(data) 
            console.log('Accepted: success')
            console.log(data)
          
        )
      )

从我的角度来看,这是一个对象列表:

return render(request, 'cards.html', 'duo_filter': shuffled_list)

当我单击按钮时,数据会正常发送到views.py,但是当我尝试在控制台中显示此数据时,它会显示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <title>Cards</title>
</head>
<body>
  
  <div style="display: flex;">
    
    <strong style="padding: 0 5px;"></strong>
    <p id="card_username"></p>
  </div>

  <!--BOTÕES (ACEITAR/RECUSAR)-->
  <div style="display: flex;">
    <button style="margin: 10px 20px; background-color: red;"
    id="refuse"
    value="refuse,">
      Recusar
    </button>
    <button style="margin: 10px 20px; background-color: green;"
    id="accept"
    value="accept,">
      Aceitar
    </button>
  </div>
  


  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-U1DAWAznBHeqEIlVSCgzq+c9gqGAJn5c/t99JyeKa9xxaYpSvHU5awsuZVVFIhvj" crossorigin="anonymous"></script>
  <script type="text/javascript">
    $(document).ready(function() 
      
      $('#refuse').on('click', function() 
        var refuse_value = $('#refuse').val();
        $.ajax(
          url: '/cards/',
          type: 'post',
          data: 'duo_status': refuse_value,
          headers:  "X-CSRFToken": "mfMSEGkKK22vPYy9Ut2DnrVjonr5oPerERO0q6CHrQrUiqpIeK9xuYUb8Ob2cz7y" ,

          success: function(data) 
            console.log('Refused -> success')

          
        )
      )

      $('#accept').on('click', function() 
        var accept_value = $('#accept').val();
        $.ajax(
          url: '/cards/',
          type: 'POST',
          data: 'duo_status': accept_value,
          headers:  "X-CSRFToken": "mfMSEGkKK22vPYy9Ut2DnrVjonr5oPerERO0q6CHrQrUiqpIeK9xuYUb8Ob2cz7y" ,

          success: function(data) 
            console.log('Accepted -> success')
            console.log(data)
          
        )
      )
    )
  </script>
</body>
</html>

这实际上是我在控制台中得到的响应,它是我的 HTML 页面,我不知道为什么,有人知道我做错了什么吗?

谢谢!!

【问题讨论】:

【参考方案1】:

您正在显示的视图 sn-p 中返回cards.html 的渲染:

return render(request, 'cards.html', 'duo_filter': shuffled_list)

Render 生成一个 html 页面。

你只想返回 json 吗?

from django.http import JsonResponse
return JsonResponse('duo_filter': shuffled_list)

【讨论】:

以上是关于我的views.py 无法响应我的AJAX 调用的主要内容,如果未能解决你的问题,请参考以下文章

如何在views.py Django中返回ajax响应以及重定向

从 django views.py 获取数据并使用 ajax 显示它

模型仅在指定 Windows 服务时响应

Ajax URL 未在 views.py 中执行正确的功能,如 urls.py 中所定义

django/ajax:无法在 views.py 中获取 Ajax 发布数据

如何从我的 html 表单获取 post id 到 views.py