繁体   English   中英

Wordpress AJAX 不发送并给出 admin-ajax.php 错误 400

[英]Wordpress AJAX not sending and give admin-ajax.php error 400

我正在尝试对 Wordpress 进行 AJAX 调用,但它在 admin-ajax.php 上给我一个 400 错误。 我想我已经正确设置了所有入队动作。 也许我仍然错过了一个小错误。 请帮忙。

我已经仔细检查了 admin-ajax.php 和 .js 文件的位置是否正确。 我也尝试过直接将 .js 文件入队而不先注册它,并在没有数组的情况下直接调用 admin-ajax.php。

我有以下错误: POST https: .../wp-admin/admin-ajax.php 400 jQuery.ajax ({ <- 这是发生错误的行)。

AJAX 调用尚未发送。

功能。php


add_action( 'wp_enqueue_scripts', 'lp_load_scripts' );
function lp_load_scripts() {
    wp_register_script( 'lp-script',get_stylesheet_directory_uri(). '/inc/js/admin.js', array('jquery'), NULL, true );
    wp_enqueue_script('lp-script');
    wp_localize_script( 'lp-script', 'lp_ajax', array('ajaxurl'=>admin_url( 'admin-ajax.php' )) );

}

add_action( 'wp_ajax_list_papers', 'list_papers' );
add_action( 'wp_ajax_nopriv_list_papers', 'list_papers' );
function list_papers() {
    $data = $_POST['key'];
    echo($data);
    wp_die();
}

管理员.js

jQuery(document).ready(function($) {
  jQuery('.find-paper').on('click',(e)=>{
    var jsondata = JSON.stringify({
      key: "listpapers",
      urn: $('#urn').val(),
      action: "list_papers",
    });
    console.log(jsondata);
    jQuery.ajax({
      url: lp_ajax.ajaxurl,
      type: "post",
      data: jsondata ,
      success: function(response){
        console.log(response);
      },
      error: function(e) {
         console.log(e);
      },
    }) 
  })
})

HTML

<input type="text" name="urn" id="urn">
<input type="button" class="find-paper" id="find-paper" value="find papers">

好的。 我终于解决了这个问题。

** 不要 JSON.stringify 数据 object。 **

此外,也不需要添加 dataType: 'json' 。

错误 400 现已消失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM