簡體   English   中英

WP Ajax 400錯誤的請求。 Ajax的類和方法

[英]WP Ajax 400 Bad request. Ajax in Class and Method

我是OOP PHP的新手,所以這可能是我出問題的地方。

這是我的簡單課程。 當我加載頁面時,它將被調用,並且其他jQuery可以很好地發送ajax請求。

編輯:我在woocommerce帳戶頁面中創建了一個新標簽。 (knp_product_submission_content)。 這會吐出一些基本的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錯誤的要求

我是否將add_action放在正確的位置? 我怎么知道它是否甚至看到了回調函數?

TIA

您創建了類,但沒有為此創建對象! 請在您的主插件文件中插入以下行:

$ajax_handlers = new submission_views();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM