第一種
<script> $(".eq").on("click",function () { $.ajax({ url:"/eq/", type:"POST", data:{ csrfmiddlewaretoken:{{ csrf_token }}, //必須寫在模板中,才會被渲染 a:$(".a").val(), b:$(".b").val() }, success:function (data) { $(".c").html(data); } }) }) </script>
第二種
//模板頁面中必須要有 {% csrf_token %}
<script> $(".eq").on("click",function () { $.ajax({ url:"/eq/", type:"POST", data:{ csrfmiddlewaretoken:$("input:first").val(), a:$(".a").val(), b:$(".b").val() }, success:function (data) { $(".c").html(data); } }) }) </script>
第三種
<script src="/static/jquery.cookie.js"></script> //必須先引入它 <script> $("#btn").on("click",function () { $.ajax({ url:"/lianxi/", type:"POST", headers:{"X-CSRFToken":$.cookie('csrftoken')}, data:$("#f1").serialize() } ) }) </script>
Ajax(FormData)實現文件上傳
FormData是什么呢?
XMLHttpRequest Level 2添加了一個新的接口
FormData
.利用FormData對象
,我們可以通過JavaScript用一些鍵值對來模擬一系列表單控件,我們還可以使用XMLHttpRequest的send()
方法來異步的提交這個"表單".比起普通的ajax,使用FormData
的最大優點就是我們可以異步上傳一個二進制文件.
所有主流瀏覽器的較新版本都已經支持這個對象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。
模板中的代碼:
<h3>Ajax上傳文件</h3> <p><input type="text" name="username" id="username" placeholder="username"></p> <p><input type="file" name="upload_file_ajax" id="upload_file_ajax"></p> <button id="upload_button">提交</button> {#注意button標簽不要用在form表單中使用#} <script> $("#upload_button").click(function(){ var username=$("#username").val(); var upload_file=$("#upload_file_ajax")[0].files[0]; var formData=new FormData(); formData.append("username",username); formData.append("upload_file_ajax",upload_file); $.ajax({ url:"/upload_file/", type:"POST", data:formData, contentType:false, processData:false, success:function(){ alert("上傳成功!") } }); }) </script>
views中的代碼:
def index(request): return render(request,"index.html") def upload_file(request): print("FILES:",request.FILES) print("POST:",request.POST) return HttpResponse("上傳成功!")