本文介绍了在Select2中发送和接收AJAX的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在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) {

当调用数据函数时,selt2会将selt2的参数放入element_id中,并限定该函数的作用域,因此它会将_type这样的变量设置为‘Query’,并将term设置为搜索词(如果已经找到了搜索词)。这在https://select2.org/data-sources/ajax#request-parameters中有更详细的描述。

我建议调整用于数据函数的参数名称。在下面的示例中,我已将其更新为params,以匹配selt2站点上的示例。然后可以使用第一行上设置的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);
    }
  }
});

这篇关于在Select2中发送和接收AJAX的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 03:16