解決JavaScript中使用$.ajax方式提交數組參數


 一般的,可能有些人在一個參數有多個值的情況下,可能以某個字符分隔的形式傳遞,比如頁面上有多個checkbox:

$.ajax{
      url:"xxxx",
      data:{
            p: "123,456,789"
      }
}

    然后后台獲取參數后再分隔,這種做法有很大弊端,試問如果某一個參數值中出現了分隔符所使用的字符,會出現什么情況呢?當然后台獲取的參數將與實際情況不符. 
這時我想到了將上述代碼寫成這樣:

$.ajax{
      url:"xxxx",
      data:{
            p: ["123", "456", "789"]
      }
}

    如果單純寫成這樣,在java和.net后台是無法取到參數的,因為jQuery需要調用jQuery.param序列化參數, 

jQuery.param( obj, traditional )

  可以通過調試查看到這里傳遞數組參數名稱會自動在原來名稱后面添加[]。上面傳遞的參數名稱為p[]

  默認的話,traditional為false,即jquery會深度序列化參數對象,以適應如PHP和Ruby on Rails框架, 我們可以通過設置traditional 為true阻止深度序列化。

  所以,比如我們前台有多個checkbox,前台的代碼可以寫成: 

var values = $("input[type=checkbox]").map(function(){
      return $(this).val();
}).get();
$.ajax{
      url:"xxxx",
      traditional: true,
      data:{
            p: values 
      }
}

 


免責聲明!

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



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