2012-10-13 17 views
10

jQuery $ .getを使用してサイトからデータを取得しようとしています。私は、同じタイプの2つのパラメータを設定する必要があります。jQueryに同じタイプの複数のパラメータを渡す方法

..&q=Some Text&q=Some other text 

jQueryの第二とのQの最初のインスタンスを上書きし、これだけの周り1.任意の方法を送っているように見えますか?

これは私が使用しようとしていたコードは次のとおりです。

var params = { 
     "otherParam":"x", 
     "q":text, 
     "q":title 
}; 
$.get(url, params, mySuccessFunction); 
+1

停止、無意味な無意味な編集と。それはStackoverflowの編集方針の違反です。 –

答えて

25

試してみてください。

var params = { 
    "otherParam": "x", 
    "q": [ text, title ] 
}; 

編集 —の詳細:そのような配列値パラメータは、jQueryので特別扱いされています。リリース1.5や1.6以降のデフォルトでは、多くの一般的なサーバーフレームワークを緩和するために、「[]」(大括弧で囲まれた文字)を接尾辞(数字なし、誤った以下のコメント)。それが欲しくない場合は、

jQuery.ajaxSettings.traditional = true; 

と設定することができます。これは「q []」ではなく「q」になります。

+0

これは '&q = text&q = title'を構築していないようです。このソリューションで私のテストで私は奇妙なURLを取得します: '?otherParam = x&q%5B%5D =テキスト&q%5B%5D = title' –

+0

それはうまくいません –

+1

@CliffRibaudo私はそれがうまくいくと確信しています。 FirebugやChromeデバッガなどでサーバーに何が送信されているのか確認しましたか? jQueryは、パラメータに "q [0]"、 "q [1]"などの名前を付けることに注意してください。'jQuery.ajaxSettings.traditional = true'を設定することで、そうしないようにすることができます。 – Pointy

1

あなたはこのようにURLを書き込むことができます。

$.get(
    url+'?q='+encodeURIComponent(text)+'&q='+encodeURIComponent(title)+'&otherParam='+encodeURIComponent('x'), 
    mySuccessFunction 
); 
+0

恐ろしい男!私はそれの変種を使って私が望むものを得ることができました。 Kewl! –

+0

jQueryはあなたのためにその仕事をしてくれてうれしく思います: – Pointy

+0

あなたの提案は私のサーバーによってどのように拒否されましたか? –

10

そして、私は(干渉したくないので、私はやっていないことを好むだろうどのjQuery.ajaxSettings.traditional = true;encodeURIComponent()やいじりを必要としない、それを解決する別の方法一時的であっても)、サイトの他の部分が同時に実行している可能性があります。

です:

var params = { 
    "otherParam": "x", 
    "q": [ text, title ] 
}; 

$.get(url, $.param(params, true), mySuccessFunction); 
+2

'$ .ajax()'を省略して '$ .ajax()'を直接使用すると、グローバル設定を変更せずに従来のシリアライゼーションを強制することができます: '$ .ajax({traditional:true、url:。 ..}) '。しかしこれは別の良い選択肢です。 –

5

別のアプローチは、このような$.param()http://api.jquery.com/jQuery.param/

だから、何かを使用することです。

まず、次のサービスに送信するデータを作成するのparamsオブジェクト

var params=[{ 
    name: 'param1', 
    value: 'hello' 
}, 
{ 
    name: 'param1', 
    value: 'alex' 
}]; 

を作成します。

var data = jQuery.param(params); 

このオブジェクトは、ajaxリクエストのデータパラメータとして挿入できます。私は設定オブジェクトを使用するのが好きです

var settings={ 
    url: 'api/domain/timeline', 
    type: 'get', 
    contentType: 'application/json', 
    data: data 
    }; 
$.ajax(settings); 
+0

すばらしい解決策。ありがとうございました。 – TrojanName

-1

物事はかなりシンプルでjQueryのウェブサイトhttp://api.jquery.com/jquery.param/に記載されている:jQuery.ajaxSettings.traditional = true;を変更することなく

var params=[ 
     {name:"q", value:title}, 
     {name:"q", value:text} 
]; 
$.get(url, params, mySuccessFunction); 
関連する問題