web-dev-qa-db-ja.com

jQueryのselect2ajax呼び出しにパラメーターを渡す

Select2内のajax呼び出しに追加のパラメーターを渡そうとしています:

  $(".auto-sug").select2({
    width:'element',
    minimumInputLength:2,
    ajax: {
        url: "/action/get-custom.php",
        data: function (term, page) {
          return {
              q: term, // search term
              page_limit: 10
          };
        },
        results: function (data, page) {
            return {results: data.stuff};
        }
    }
  });

私は実際に別のパラメーターをajax呼び出しに渡したい...要素自体のID

<input type="text" class="auto-sug" name="custom" id="3383" />

ただし、要素のID(3383)またはページ上の他の値に実際にアクセスする方法を理解できません。

14
Cary

クラスauto-sugの要素が複数あるとすると、次のように試すことができます。

$(".auto-sug").each(function() {
    var thisId = this.id;
    $(this).select2({
        ...
        ajax: {
            ...
            id: thisId,
        },
    });
});
13
sjy

リクエストを行うたびに実行されるように、ルートajaxではなくデータ関数内にその追加パラメーターを渡す必要があります。

_ajax: {
    url: "/action/get-custom.php",
    data: function (term, page) {
      return {
          q: term, // search term
          anotherParm: whatEverValue, //Get your value from other elements using Query, for example.
          page_limit: 10
      };
_

次に、現在のselect2のIDを取得するために、whateverValue$(this).data(key)に置き換えることができます。

8
Sergio

ここで新しいパラメータを追加できます。

 data: function (params) {
        ultimaConsulta = params.term;
        localidad = $("#idOcultoLocalidad").val(); //this is the anotherParm
        return {
            criterio: params.term, // search term
            criterio2: localidad,
        };
    },
0