使用datatables服务器端脚本Wordpress调用ajax函数时收到400个错误请求

使用datatables服务器端脚本Wordpress调用ajax函数时收到400个错误请求,ajax,wordpress,datatables,server-side-scripting,Ajax,Wordpress,Datatables,Server Side Scripting,我正在创建一个插件,使用datatable服务器端脚本从自定义表获取数据 在查询中,我得到了正确的响应,但在ajax函数调用中,得到了400个错误的请求 请求URL: 申请方式:邮寄 状态代码:400错误请求 远程地址:[::1]:80 我的ajax js文件 $(document).ready(function() { var dataTable = $('#employee-grid').DataTable( { "processing": true, "se

我正在创建一个插件,使用datatable服务器端脚本从自定义表获取数据

在查询中,我得到了正确的响应,但在ajax函数调用中,得到了400个错误的请求

请求URL: 申请方式:邮寄 状态代码:400错误请求 远程地址:[::1]:80

我的ajax js文件

$(document).ready(function() {
var dataTable = $('#employee-grid').DataTable( {
        "processing": true,
        "serverSide": true,
        dataType: "json",
        contentType: "application/json",
        "ajax":{
            "url" : 'admin-ajax.php',
            "type": "POST",
            "data": {action: 'my_action'},
            error: function(){  // error handling
                $(".employee-grid-error").html("");
                $("#employee-grid").append('<tbody class="employee-grid-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>');
    $("#employee-grid_processing").css("display","none");},
        success: function(data){
            alert(data);
        }
    },
        "columns": [
            {"data": "employee_name"},
            {"data": "employee_salary"},
            {"data": "employee_age"}                       
        ], "columnDefs": [
            //{"orderable": false, "targets": 12}
            ]
        } );
    } ); 
更新 当我检查您使用POST方法中不存在的参数时,您需要添加这些参数并检查它们是否存在

您应该像这样用ajax函数传递POST参数

data: {
    action: 'search_enrollment_by_scode',
    draw : 'draw',
    row : 'start',
    rowperpage : 'length',
    columnIndex : 'order',
    columnName : 'columns',
    columnSortOrder : 'order',
    searchValue : 'search',

}
注意:您应该添加有效的数据或变量

您的PHP文件

<?php 
add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' );

function my_action() {

global $wpdb;

## Read value
// you need to check that you have this data or not
// you just add action data not any of bellow list
if ($_POST['draw']) {
        $draw = $_POST['draw'];
.
.
.
.
.
.
.

    echo json_encode($response);
}
else
{
    echo json_encode('Data is invalid or not complete');
}
exit();
}
 ?>
正如Wordpress AJAX文档中所描述的,您有两个不同的钩子-wp_AJAX_(action)和wp_AJAX_nopriv_(action)。两者的区别在于:

wp_ajax_(操作):如果从管理面板内部进行ajax调用,则会触发此操作。 wp\u ajax\u nopriv\u(操作):如果从网站前端发出ajax调用,则会触发此操作。

更新 当我检查您使用POST方法中不存在的参数时,您需要添加这些参数并检查它们是否存在

您应该像这样用ajax函数传递POST参数

data: {
    action: 'search_enrollment_by_scode',
    draw : 'draw',
    row : 'start',
    rowperpage : 'length',
    columnIndex : 'order',
    columnName : 'columns',
    columnSortOrder : 'order',
    searchValue : 'search',

}
注意:您应该添加有效的数据或变量

您的PHP文件

<?php 
add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' );

function my_action() {

global $wpdb;

## Read value
// you need to check that you have this data or not
// you just add action data not any of bellow list
if ($_POST['draw']) {
        $draw = $_POST['draw'];
.
.
.
.
.
.
.

    echo json_encode($response);
}
else
{
    echo json_encode('Data is invalid or not complete');
}
exit();
}
 ?>
正如Wordpress AJAX文档中所描述的,您有两个不同的钩子-wp_AJAX_(action)和wp_AJAX_nopriv_(action)。两者的区别在于:

wp_ajax_(操作):如果从管理面板内部进行ajax调用,则会触发此操作。
wp_ajax_nopriv_(操作):如果从网站前端发出ajax调用,则会触发此操作。

我在您给出的时候添加了一行,但显示了相同的错误“400错误请求”。@Jayesh那么问题将与您操作中的代码有关,您可以分享您的操作吗?或者注释所有代码并返回1@Jayesh我更新了答案,因为我检查了你使用的参数在你的POST方法中不存在,你需要添加它们,并且检查它们是否存在,如果你做了更改,但没有运气。谢谢你,@nasser。调用参数问题。对我有用。我在你给出的时候添加了一行,但显示了相同的错误“400错误请求”。@Jayesh那么问题将与你的操作中的代码有关,你能分享你的操作吗?或者注释所有代码并返回1@Jayesh我更新了答案,因为我检查了你使用的参数在你的POST方法中不存在,你需要添加它们,并且检查它们是否存在,如果你做了更改,但没有运气。谢谢你,@nasser。调用参数问题。对我有用。