向jQuery的select2 AJAX 调用传递参数

rm5edbpk  于 2023-02-11  发布在  jQuery
关注(0)|答案(3)|浏览(194)

我尝试将一个额外的参数传递给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)或页面上的任何其他值。

rqenqsqc

rqenqsqc1#

您应该在data函数中传递这个额外的参数,而不是在根 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)
这将生成一个指向端点的url

/action/get-custom.php?q=term&anotherParm=whatEverValue&page_limit=10
2eafrhcq

2eafrhcq2#

假设auto-sug类中有多个元素,您可以尝试如下操作:

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

mrfwxfqh3#

您可以在此处添加新参数。

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

相关问题