【问题标题】:Send & Receive parameters of AJAX in Select2Select2中AJAX的发送和接收参数
【发布时间】:2022-01-24 08:07:22
【问题描述】:

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

【问题讨论】:

  • $_POST['q'] 用于表单数据...您的数据应该是这样的:"q="+element_id+"&action=get_data";
  • 感谢@Shlomtzion。但我将数据作为 POST 发送。如何在 PHP 中接收参数值?

标签: php jquery ajax wordpress jquery-select2


【解决方案1】:

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

当调用数据函数时,select2 会将 select2 的参数放在 element_id 范围内的函数中,因此它会将变量像 _type 设置为“查询”,将 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);
    }
  }
});

【讨论】:

  • 谢谢@Chris C。你能谈谈PHP方面的事情吗?
  • 据我所知,PHP 端应该没问题。看来您已经能够访问 $_POST['action'],通过对 JavaScript 的此更新 $_POST['q'] 应该具有您正在寻找的值
猜你喜欢
  • 1970-01-01
  • 2014-07-10
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
相关资源
最近更新 更多