我正在尝试使用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}}中对模板进行标记,以验证是否正在获取该数据,但是什么也没发生!我什至没有错误。
答案 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>