在AJAX调用中收到400个错误请求

时间:2018-03-11 作者:NotoriousWebmaster

我正在使用一个类构建一个自定义的post类型插件。我在页面上有一个表单,它进行AJAX调用,然后返回400个错误请求和0个响应。

我试着用邮递员独立于页面拨打电话。还是一样的回答。

在构造函数中:

add_shortcode(\'websites_form\', [$this, \'renderForm\']);

// handle AJAX calls for both logged in and guest users
add_action(\'wp_action_websites_cpt_create_post\', [$this, \'create_post\']);
add_action(\'wp_action_nopriv_websites_cpt_create_post\', [$this, \'create_post\']);
其他两种方法:

public function renderForm() {

    wp_register_script(\'websites-cpt-process-form\', plugins_url(\'js/process-form.js\', __FILE__), null, null, true );

    // vars being sent to JS
    $php_vars = [
        // passing the url to call for passing the form data back to WP
        \'ajaxurl\' => admin_url( \'admin-ajax.php\', isset( $_SERVER["HTTPS"] ) ? \'https://\' : \'http://\' )
    ];
    wp_localize_script( \'websites-cpt-process-form\', \'phpvars\', $php_vars );

    wp_enqueue_script( \'websites-cpt-process-form\' );


    return file_get_contents( plugin_dir_path( __FILE__ ) . "partials/websites-form.php" );
}

public function create_post() {
    global $oLog;

    $oLog->logrow(\'POST\', $_POST);

    // verify nonce

    // create post with name in title

    // add url in metadata

    // echo response
    echo json_encode($_POST);

    // die
    die();
}
所以看起来wp_action-XXX 未注册操作。我试着把echo\'在create_post() 方法,但输出中未显示任何内容。

感谢您的任何建议。我不知道下一步该转向哪里。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

我认为问题在于:

// handle AJAX calls for both logged in and guest users
add_action(\'wp_action_websites_cpt_create_post\', [$this, \'create_post\']);
add_action(\'wp_action_nopriv_websites_cpt_create_post\', [$this, \'create_post\']);
因为格式应为:

add_action( \'wp_ajax_{ACTION_NAME}\', [ $this, \'create_post\' ] );
add_action( \'wp_ajax_nopriv_{ACTION_NAME}\', [ $this, \'create_post\' ] );
。。哪里{ACTION_NAME} 是“action”名称,例如,websites\\u cpt\\u create\\u post。

看见wp_ajax_{$_REQUEST[\'action\']}wp_ajax_nopriv_{$_REQUEST[\'action\']}.

结束

相关推荐

AJAX WordPress函数在警报中显示源代码,而不是输入字段的值?

我正在尝试让ajax正常工作,因此当用户输入邮政编码并单击提交时,会出现一个警报,说明他们输入的邮政编码。我对AJAX真的很陌生,所以如果下面的代码很糟糕,请原谅我!单击“提交”时,会出现一个警报框,但会显示整个页面的源代码,而不是中的消息postcode_ajax2. 有人能帮忙吗?function ajax_postcode_form_init() { wp_register_script(\'ajax-login-script\', get_bloginfo(\'stylesheet