ajax的traditional屬性


jquery框架的ajax參數除了常用的

$.ajax({
  url: 'xxx',
  type: 'xxx',
  data: 'xxx',
  success: 'xxx'
  ...
})

外還有一個參數需要特別注意下traditional默認值是false。ajax做數據處理時,是通過jQuery.param( obj, traditional )該方法進行處理。
jquery1.4版本以后
traditional參數,默認false的時候如果是{a:{b:'value'}}是處理成a[b],這樣形式,如果是數組:data:{a:[1,2]},是解析成a[]=1&a[]=2,這種方式后台確實要做兼容(取a[b]或a[])來取值。
在數組情況下把traditional參數設置成true,是解析成a=1&a=2,對后台直接通過a拿數據。但是實驗了下object情況,把traditional設置成true,轉成了a=[object+Object],這樣就是費的了。false時解析成上面的形式應該就是類型指示作用,我看到這種格式就知道請求數據是Array還是object了,true就是按照form提交的方式傳值。

當需要把多個checkbox的value值通過ajax傳到servlet時就需要加上traditional參數並且為true,如下代碼:

//批量刪除
            $("#alldel").click(function () {
                var ids = $(".che:checked");
                var items = new Array();
                for (var i=0;i<ids.size();i++){
                    items.push(ids[i].value);
                }
                if (confirm("您確定要刪除選中數據嗎?")) {
                    $.ajax({
                        type: "post",
                        url: "UserServlet?action=deleteAll",
                        data:{items:items},
               //防止深度序列化 traditional :
true, async: true, success: function(data) { var da = JSON.parse(data); alert(da.msg) app.count(); }, error: function(data) { console.info("error: " + data.responseText); } }); } });

 在后台我們就可以用 String[] items = request.getParameterValues("items")  進行接收前端傳過來的數組,如下圖:

這樣就可以用SQL語句 delete from xxx where id in(x,x)  多參數的形式進行操作了。

注:本文僅為個人學習筆記。


免責聲明!

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



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