jquery ajax contentType設置


 

  默認get方法沒有contentType,post方法的contentType為:application/x-www-form-urlencoded; charset=UTF-8

(1) 設置成application/x-www-form-urlencoded, 后端可以直接用

String username = request.getParameter("username");
String password = request.getParameter("password");

getParamter方法獲取。

如:

            $.ajax({
                type: 'post',
                url:'/contentType',
                contentType:'application/x-www-form-urlencoded',
                data:{
                    username:'admin',
                    password:'123123'
                },
                dataType:'json',
                success:function (data) {

                }
            })    

 

(2)設置成application/json

這個時候可以看出取不到數據了。

解決辦法:

InputStream inputStream = request.getInputStream();
String param = IOUtils.toString(inputStream);

如果這樣請求:

$.ajax({
    type: 'post',
    url:'/contentType',
    contentType:'application/json',
    data:{
        username:'admin',
        password:'123123'
    },
    dataType:'json',
    success:function (data) {

    }
})

拿到的是一個&分隔開的鍵值對

所以前端先做一層json的轉化:

var info ={
    username:'admin',
    password:'123123'
};
$.ajax({
    type: 'post',
    url:'/contentType',
    contentType:'application/json',
    data: JSON.stringify(info),
    dataType:'json',
    success:function (data) {

    }
})

然后就可以得到標准的json的格式了。接下來就是json的轉化了

 

接下來測試:'application/json'和'application/x-www-form-urlencoded'能攜帶的數據量的差異:

 

用application/json:后面‘2’長度幾十萬,后端都可以接收。

改用另外一個也可以

 但是get方法表單傳值和json傳值是有限制的,太多服務端會報錯:

 

所以用post傳值長度一般情況是是足夠的。


免責聲明!

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



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