Select2 中 AJAX 的发送和接收参数

Send & Receive parameters of AJAX in Select2

如何在Select2中发送AJAX的参数并在PHP中接收?

我正在尝试发送如下参数。

     let element_id = event.target.id;
     let selectEle = cellEle.children("select").select2({
          ajax: {
            url: "/wp-admin/admin-ajax.php",
            dataType: 'json',
            data: function (element_id) {
                 return { 
                    q: element_id,
                    action: 'get_data'
                 };
             },
            type: "post",
            processResults: function(data) {                             
              console.log(data);
            }
          }
        });

我正在尝试接收如下参数。

function get_data()
{
    echo json_encode($_POST['q']);
    die;
}

我得到结果 null

名称 element_id 用于第一行声明的变量 let element_id = event.target.id; 和数据函数使用的参数名称 data: function (element_id) {.

当数据函数被调用时,select2 会将 select2 的参数放在函数的 element_id 范围内,因此它会将像 _type 这样的变量设置为 'query' 和 term 设置为搜索词(如果已经输入)。这在 https://select2.org/data-sources/ajax#request-parameters.

中有更详细的描述

我建议调整用于数据函数的参数名称。我已在下面的示例中将其更新为 params 以匹配 select2 站点上的示例。然后可以使用第一行设置的 element_id 变量来传递数据。

let element_id = event.target.id;
let selectEle = cellEle.children("select").select2({
  ajax: {
    url: "/wp-admin/admin-ajax.php",
    dataType: 'json',
    data: function (params) {
         return { 
            q: element_id,
            action: 'get_data'
         };
     },
    type: "post",
    processResults: function(data) {                             
      console.log(data);
    }
  }
});