Php wpajax400请求错误。类和方法中的Ajax

Php wpajax400请求错误。类和方法中的Ajax,php,ajax,wordpress,Php,Ajax,Wordpress,我是OOP PHP新手,所以这可能是我出错的地方 这是我的简单课程。当我加载页面时会调用它,另外的jQuery可以很好地发送ajax请求 编辑: 我在woocommerce帐户页面中创建了一个新选项卡。knp产品提交内容。这就产生了一些基本的HTML。 当用户单击页面上的图标时,表单中的数据通过ajax提交,只是操作输入的值。然后,这将从回调返回内容 /************** Add the core js file in the main plugin file. **********

我是OOP PHP新手,所以这可能是我出错的地方

这是我的简单课程。当我加载页面时会调用它,另外的jQuery可以很好地发送ajax请求

编辑: 我在woocommerce帐户页面中创建了一个新选项卡。knp产品提交内容。这就产生了一些基本的HTML。 当用户单击页面上的图标时,表单中的数据通过ajax提交,只是操作输入的值。然后,这将从回调返回内容

/**************
Add the core js file in the main plugin file. 
*********************/
function knp_vendor_scripts(){  
    wp_enqueue_script( 'core', plugin_dir_url(__FILE__).'js/core.js', array(), false, true );
    wp_localize_script('core', 'vendor_ajax_object', array('ajax_url' => admin_url('admin-ajax.php')));

}
add_action( 'wp_enqueue_scripts', 'knp_vendor_scripts' );

/**
* New class initiated in a woocommerce endpoint function
**/
function knp_product_submissions_content(){ 

  //Create the views object for fetching and displaying. 
  $views = new submission_views();         
  echo '<div class="ajax-container-div">';
     //response content should go here      
  echo '</div>';

}
add_action('woocommerce_account_product-submissions_endpoint', 'knp_product_submissions_content');

/**
* Get the data from the form
* the user has just clicked on
*/
jQuery(document).ready(function(){

    jQuery('.knpv_form_submit').on('click', function(){

    var formID = 
    jQuery(this).closest('form.knpv_ajax_form').attr('id');

    var data = jQuery('#'+formID).serialize();

    jQuery.post(vendor_ajax_object.ajax_url, data, function(response) {

        jQuery('.ajax-container-div').html(response);

    });

  });

});

class submission_views{
    /**
    * Setup ajax action and callbacks
    */
    public function __construct(){
        //Get the form for a new submission
        add_action('wp_ajax_knpv_add_new_submission', array($this, 'knpv_add_new_submission_callback'));
        add_action('wp_ajax_nopriv_knpv_add_new_submission', array($this, 'knpv_add_new_submission_callback'));
    }

    /**
    * Get the form html and send back 
    */ 
    public function knpv_add_new_submission_callback(){ 
        ob_start(); 
        ?>

        <section class="knp_vendor_submission_form">
            <div class="container">
                <div class="row">
                    <div class="col-md-12">
                        <?php echo do_shortcode('[gravityform id=3'); ?>
                    </div>
                </div>
            </div>
        </section>

        <?php 
        $content = ob_get_clean();
        return $content;
    }
我用它来代替页面上的一些内容。它在单击时被触发,我得到的响应是

400错误请求

我是否将添加操作放置在正确的位置?我怎么知道它是否看到了回调函数


TIA

您创建了类,但没有为此创建对象!请在主插件文件中插入以下行:

$ajax_handlers = new submission_views();

我们需要看到更多的代码来帮助您:您是如何让JS排队的?如何调用ajax?更多代码应该会有所帮助@如果我从类中取出add\u aciton函数并将它们放在插件文件中,那么整个过程都会正常工作。您正在实例化submission\u views类吗?如果是,在哪里,如何?啊,我现在看到了。很可能这个类被实例化得太晚了,这就解释了为什么你的钩子没有被注册/运行。试着挂接到,然后在那里实例化你的类。你把它放在错误的地方,从那里删除它,并把它放在插件的主文件中。这个问题会回来回答的。我在工作中被拉到了其他事情上,但今天我会回来回答/反馈。