10

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

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

jQueryはqの最初のインスタンスを2番目のインスタンスで上書きし、1を送信しているように見えます。これを回避する方法はありますか?

これは私が使おうとしていたコードです:

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

5 に答える 5

27

試す:

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

編集—詳細情報:そのような配列値のパラメーターは、jQueryによって特別に処理されます。多くの一般的なサーバーフレームワークをなだめるために、デフォルトでは(リリース1.5または1.6以降だと思います)、サフィックスとして「[]」(開き括弧と閉じ括弧の文字)を含むパラメーター名になります(私の間違いとは異なり、数字はありません)以下のコメント)。それを望まない場合は、設定することができます

jQuery.ajaxSettings.traditional = true;

「q[]」ではなく「q」になります。

于 2012-10-13T19:46:01.717 に答える
10

そして、それを解決する別の方法は、サイトの他の部分が同時に実行している可能性のあることを(一時的にでも)妨害したくないので、私がしたくないことを必要とせずencodeURIComponent()、混乱 させません。jQuery.ajaxSettings.traditional = true;

は:

 var params=[ 
       {name:"q", value:title},
       {name:"q", value:text}
 ];
 $.get(url, params, mySuccessFunction);
于 2012-10-15T14:24:21.733 に答える
5

変更せずに別のアプローチは、 http://api.jquery.com/jQuery.param/jQuery.ajaxSettings.traditional = true;を使用することです$.param()

だからこのようなもの:

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

$.get(url, $.param(params, true), mySuccessFunction);
于 2013-11-20T23:55:50.853 に答える
1

あなたはこのようにURLを書くことができます:

$.get(
   url+'?q='+encodeURIComponent(text)+'&q='+encodeURIComponent(title)+'&otherParam='+encodeURIComponent('x'),
   mySuccessFunction
);
于 2012-10-13T19:47:42.867 に答える
-1

物事は非常に単純で、jQueryWebサイト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);
于 2016-03-01T13:02:23.647 に答える