ajax數(shù)組傳參

作為一名前端coder,用的最多的請(qǐng)求就是ajax請(qǐng)求了?;蛟S你用的其他框架,但是從原生js到j(luò)query,ajax你一定不陌生。當(dāng)初摸打滾爬的學(xué)習(xí)的時(shí)候就碰到關(guān)于ajax的一個(gè)問(wèn)題,那就是ajax數(shù)組傳參。
舉個(gè)實(shí)例如下代碼:

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

當(dāng)請(qǐng)求的時(shí)候參數(shù)如下:


image.png

看到這你就明白問(wèn)題所在,arr數(shù)組不是你想要的,你想要的是這種:

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

項(xiàng)目催的很,情急之下你用這樣的方式解決

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

運(yùn)行結(jié)果如下:


image.png

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

 $.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(){
  }
})

再看結(jié)果:


image.png

可以知道我們加了個(gè):traditional :true,那么這個(gè)traditional有何作用呢
打開(kāi)個(gè)jquery文檔如下解釋?zhuān)?/p>

traditional (Boolean)
如果你想要用傳統(tǒng)的方式來(lái)序列化數(shù)據(jù),那么就設(shè)置為true。請(qǐng)參考工具分類(lèi)下面的jQuery.param 方法。

在翻文檔查看jQuery.param 方法

將表單元素?cái)?shù)組或者對(duì)象序列化。是.serialize()的核心方法。
在jQuery 1.3中,如果傳遞的參數(shù)是一個(gè)函數(shù),那么用.param()會(huì)得到這個(gè)函數(shù)的返回值,而不是把這個(gè)函數(shù)作為一>個(gè)字符串來(lái)返回。
在jQuery 1.4中,.param()會(huì)深度遞歸一個(gè)對(duì)象來(lái)滿足現(xiàn)在腳本語(yǔ)言和框架,比如PHP, Ruby on Rails等。你可以
通過(guò)jQuery.ajaxSettings.traditional = true; 來(lái)全局得禁用這個(gè)功能。
注意:因?yàn)橛行┛蚣茉诮馕鲂蛄谢瘮?shù)字的時(shí)候能力有限,所以當(dāng)傳遞一些含有嵌套對(duì)象、數(shù)組的對(duì)象作為參數(shù)時(shí),
請(qǐng)務(wù)必小心!
在jQuery 1.4中,HTML5的input元素也會(huì)被序列化。

第一句已經(jīng)很明顯告知我們表單元素?cái)?shù)組或者對(duì)象序列化
所以只要將traditional設(shè)置為true就可以按照序列化方式傳參。問(wèn)題也就解決了,所以說(shuō)看書(shū)還是要仔細(xì)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,271評(píng)論 0 1
  • 第1章 jQuery實(shí)現(xiàn)Ajax應(yīng)用 1-1 使用load()方法異步請(qǐng)求數(shù)據(jù) 使用load()方法通過(guò)Ajax請(qǐng)...
    mo默22閱讀 1,886評(píng)論 1 9
  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,497評(píng)論 0 2
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,642評(píng)論 18 399
  • 這是我中斷了115天后,受12班的激勵(lì),又踐行的提指畫(huà)屏。重拾思考的,復(fù)盤(pán)的,輸出倒逼輸入的習(xí)慣,哪能叫得上叫習(xí)慣...
    芮涵琪雪閱讀 384評(píng)論 1 4

友情鏈接更多精彩內(nèi)容