使用post方法将数据与ajax传递给Django

时间:2019-05-08 13:38:58

标签: python ajax django

我正在尝试使用POST方法通过ajax将数据发送到django视图,就像我在一个教程中看到的那样。

我编写的代码如下(myURL是我称为testview的URL):

      $(document).on('submit','#form',function(e){
        e.preventDefault();

        $.ajax({
          type:'POST',
          url:'/myURL/',
          data:{
            HELLO: "I'm inside ajax data"
          },
          contentType: "application/json",
          datatype: 'json',
          sucess:function(){
            alert("Ajax pass data correctly");

          }
        })
      });
    </script>

在django中,我将按以下方式呼叫HELLO。 test.html是我拥有html表单

的地方

    if request.method == 'POST':

        takeHELLOfromajaxpost = request.POST['HELLO']

        return render(request,'test.html',{'dataTakenfromAjax':takeHELLOfromajaxpost})



    return render(request,'test.html',{}) 

然后,我将在相同的HTML {{dataTakenfromAjax}}中对模板进行标记,以验证是否正在获取该数据,但是什么也没发生!我什至没有错误。

1 个答案:

答案 0 :(得分:0)

首先,您没有随请求发送csrfmiddlewaretoken

第二,您在success参数中有错字。

第三,您可能希望它完全更改html?比您应该在成功响应时添加$("body").html()。这样,您的变量就会显示在页面上。

test.html:

{{ dataTakenfromAjax }}

<form action="" id="form">
    {% csrf_token %}
    <button type="submit">Submit</button>
</form>
<script
        src="https://code.jquery.com/jquery-3.4.1.js"
        integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
        crossorigin="anonymous"></script>
<script>
    $(document).on('submit', '#form', function (e) {
        e.preventDefault();

        $.ajax({
            type: 'POST',
            url: '/myURL/',
            data: {
                csrfmiddlewaretoken: $("[name=csrfmiddlewaretoken]").val(),
                HELLO: "I'm inside ajax data"
            },
            success: function (data) {
                $("body").html(data);
            }
        })
    });
</script>