ajax數組傳參

作為一名前端coder,用的最多的請求就是ajax請求了。或許你用的其他框架,但是從原生js到jquery,ajax你一定不陌生。當初摸打滾爬的學習的時候就碰到關于ajax的一個問題,那就是ajax數組傳參。
舉個實例如下代碼:

 $.ajax({
  url: 'http://localhost:8088/test.jsp',
  type: 'GET',
  dataType: 'json',
  data:{
    user:'username',
    arr: ['talent','hirer','agent']
  },
  success: function(data){
  },
  error: function(){
  }
})

當請求的時候參數如下:


image.png

看到這你就明白問題所在,arr數組不是你想要的,你想要的是這種:

user:username,
arr:'talent',
arr:'hirer',
arr:'agent'

項目催的很,情急之下你用這樣的方式解決

url: 'http://localhost:8088/test.jsp?user=username&arr=talent&arr=hirer&arr=agent'

運行結果如下:


image.png

是的這樣的確解決,達到了你的目的。但是畢竟這是妥協的做法,那么你就想難道ajax就不能按照你想要的方式傳送嗎?答案當然是有的,只怪當初學習jquery不認真了解不深入,先放解決辦法
代碼修改如下:

 $.ajax({
  url: 'http://localhost:8088/test.jsp',
  type: 'GET',
  dataType: 'json',
  traditional :true
  data:{
    user:'username',
    arr: ['talent','hirer','agent']
  },
  success: function(data){
  },
  error: function(){
  }
})

再看結果:


image.png

可以知道我們加了個:traditional :true,那么這個traditional有何作用呢
打開個jquery文檔如下解釋:

traditional (Boolean)
如果你想要用傳統的方式來序列化數據,那么就設置為true。請參考工具分類下面的jQuery.param 方法。

在翻文檔查看jQuery.param 方法

將表單元素數組或者對象序列化。是.serialize()的核心方法。
在jQuery 1.3中,如果傳遞的參數是一個函數,那么用.param()會得到這個函數的返回值,而不是把這個函數作為一>個字符串來返回。
在jQuery 1.4中,.param()會深度遞歸一個對象來滿足現在腳本語言和框架,比如PHP, Ruby on Rails等。你可以
通過jQuery.ajaxSettings.traditional = true; 來全局得禁用這個功能。
注意:因為有些框架在解析序列化數字的時候能力有限,所以當傳遞一些含有嵌套對象、數組的對象作為參數時,
請務必小心!
在jQuery 1.4中,HTML5的input元素也會被序列化。

第一句已經很明顯告知我們表單元素數組或者對象序列化
所以只要將traditional設置為true就可以按照序列化方式傳參。問題也就解決了,所以說看書還是要仔細

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.JQuery 基礎 改變web開發人員創造搞交互性界面的方式。設計者無需花費時間糾纏JS復雜的高級特性。 1....
    LaBaby_閱讀 1,200評論 0 1
  • 第1章 jQuery實現Ajax應用 1-1 使用load()方法異步請求數據 使用load()方法通過Ajax請...
    mo默22閱讀 1,731評論 1 9
  • 1.JQuery 基礎 改變web開發人員創造搞交互性界面的方式。設計者無需花費時間糾纏JS復雜的高級特性。 1....
    LaBaby_閱讀 1,367評論 0 2
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,754評論 18 399
  • 這是我中斷了115天后,受12班的激勵,又踐行的提指畫屏。重拾思考的,復盤的,輸出倒逼輸入的習慣,哪能叫得上叫習慣...
    芮涵琪雪閱讀 329評論 1 4