ajax發送json格式數據


前后端在做數據交互的時候 一定一定要表明你所發的的數據到底是什么格式

前段后交互 你不能騙人家,不然后端開發人員來找你的時候會抄着一根凳子腿。
你的數據時什么格式 你就應該准確無誤告訴別人是什么格式

那么怎么告訴后端你要發送的數據的格式是什么呢

form 表單是通過 他的 enctype

而 ajax 是通過 contentType,如果你要傳送的數據是json(通常只有json格式)

你需要這么寫 contentType:'application/json'

要怎樣發送一個json格式的數據呢? 后端有json.dumps 前端有JSON.stringify()。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>

</head>
<body>
<input type="text" id="t1"> + <input type="text" id="t2"> = <input type="text" id="t3">
<p>
    <button id="b1">計算</button>
</p>
<script>
    $('#b1').on('click',function () {
        $.ajax({
            url:'',
            type:'post',
            contentType:'application/json',
            {#data:{'t1':$('#t1').val(),'t2':$('#t2').val()},#}
            data:JSON.stringify({'username':'chanyuli','password':'123'}),
            success:function (data) {
                $('#t3').val(data)
                {#alert(data)#}
            }
        })
    })
</script>
</body>
</html>

這時候就會發現后端 post 里面沒有任何信息了,這就是之前講過的,django后端會對不同的數據格式進行不同的處理,這又不是 xxxxx&xxxxx類型的。所以沒有在post里面。

Ajax傳json格式數據:django后端針對json格式的數據 不會自動幫你解析 會直接原封不動的給你放到request.body中 你可以手動處理 獲取數據。

這時候去后端 打request.body ,發現是一個b'{"username":"chanyuli","password":"123"}

是一個bytes類型的數據,這時候我們自己反序列化就好了。

注意點
1.指定contentType參數
  contentType:'application/json',
2.要將你發送的數據 確保是json格式的
                data:JSON.stringify({'username':'jason','password':'123'})
        

注意:有些時候 request.body 會看不了,django會給你報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM