2016-06-01 4 views
1

jQuery/AJAXの呼び出しで、独自のシリアライザを書く以外に、特定の方法でクエリ文字列パラメータをフォーマットすることはできますか?jQueryがAJAX URLパラメータをシリアル化する方法をカスタマイズすることは可能ですか?

私はjQueryのAJAX呼び出しを持っている、とAJAX呼び出し$.get("/Controller/Action/", params)を点検URLパラメータ

var params = {name: 'somename', favColors: ['red','blue']};

を含むオブジェクトを渡していますが、URLののparam文字列が?name=somename&favColors[]=red&favColors[]=blue

ターゲットURLが期待であることを示しています繰り返される配列値に対して[]を含まないクエリパラメータ、例?name=somename&favColors=red&favColors=blue

ありがとう!

答えて

0

あなたはjQuery.param()し、その第二を使用することができますブラウザのコンソールでテスト

var reg =/%5B%5D/g; 
var params= $.param({name: 'somename', favColors: ['red','blue']}).replace(reg,''); 
$.get("/Controller/Action/", params) 

:他の回答の文字列で述べたように

は、データ引数

のような何かのためのオブジェクトと同様に使用することができますその結果を$.get()に提供する:

var params = {name: 'somename', favColors: ['red','blue']}; 

$.get("/Controller/Action/", $.param(params, true)) 

引数は以下のように記載されている:従来の「浅い」シリアル化を実行するかどうかを示す

ブール。この場合

console.log($.param(params, true)); 
// "name=somename&favColors=red&favColors=blue" 
+0

がtraditional'が何であったか '把握するために停止したことがない、私はそれを必要としたことがないので、推測...私の答えは今 – charlietfl

+0

感謝を愚かに見える、これはありますちょうど私が後にしたソリューションの種類! – AndrewP

0

は、オブジェクトではなく第2引数としてクエリ文字列も受け入れます。これを使用して、カスタム生成クエリ文字列を追加できます。 ?はあなたのために追加されるので、あなたはそれを置く必要はありません。

0

jQueryは$.param()を使用してオブジェクトからデータ文字列をエンコードします。あなたはそれを自分で使うことができ、%5B%5Dとしてコード化された[]を取り除くことができます。唯一