1. 程式人生 > >jquery ajax contentType設定

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’長度幾十萬,後端都可以接收。

改用另外一個也可以