【问题标题】:django-Ajax Does not work on some button clicksdjango-Ajax 对某些按钮点击不起作用
【发布时间】:2022-01-07 04:45:22
【问题描述】:

我有一个网页,其中包含使用 django 生成的多个按钮。使用 ajax,当我单击按钮时,值会随机发送到服务器。按钮值是根据从 django 上下文传递的值设置的。这是代码:

<button name="date" type="submit" value={{d}} ">
            

Ajax 代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"> 
</script>
<script>
     function sendData(event){
     event.preventDefault();
     $.ajax({
     type : "POST", 
     url: "",
     data: {
       date : event.target.value,
        csrfmiddlewaretoken:'{{ csrf_token }}',

     },
     success: function(data){
             
            },
     
            failure: function() {
                
            }

      });
    }
  </script>

当我尝试在 views.py 上打印 request.POST 时,它有时只显示 csrftoken 而不是日期和 csrftoken,我尝试在成功函数中提供警报框,即使单击按钮,警报也总是弹出仅将 csrf 令牌传递给服务器 提前致谢

【问题讨论】:

    标签: jquery django ajax


    【解决方案1】:

    你可以这样来完成工作

    <button type="submit" onclick="return sendData('{{d}}')">
      <p>{{y}}</p>
      <p class="card-text">{{d}}</p>
    </button>
    

    我已经删除了一些代码看起来干净,你可以稍后添加它

    function sendData(date){
      $.ajax({
        type : "POST", 
        url: "",
        data: {
          date : date,
          csrfmiddlewaretoken:'{{ csrf_token }}',
        },
        
        success: function(data){
          
        },
        failure: function() {
          
        }
        
      });
      return false
    }
    

    我建议不要在循环中使用 id,因为它会多次重复相同的 id

    id 属性指定其元素的唯一标识符 (ID)。这 值在元素的所有 ID 中必须是唯一的 更多信息请查看this

    【讨论】:

    • 感谢您调查我的问题。但是您的解决方案可以工作 6/10 次。有时它会将数据发送到后端,但有时不会。
    • 你好@achu1 你能edit你的问题并输入更新的代码
    • 我已经更新了代码和我的问题
    • 你好@achu1我建议不要使用button标签发送数据使用输入然后它会给出准确的值我猜
    • 你好@achu1 检查我已经编辑了我的答案让我知道它是否有效。
    猜你喜欢
    • 2012-11-23
    • 2018-06-06
    • 2013-09-10
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多