处理管理-AJAX调用的正确方式

时间:2019-11-19 作者:Husk Rekoms

我正在用WordPress网站帮助一位家庭成员,已经有一段时间没有用PHP编写代码了。我需要改变他们处理http请求的方式,并阅读了以下文档:

https://codex.wordpress.org/AJAX_in_Plugins

<?php
/**
 * Plugin Name: First Plugin
 * Plugin URI: localhost
 * Description: First Plugin
 * Version: 1.0
 * Author: Giltea
 * Author URI: webmeau.ca
 **/

    global $wpdb;
    $wpdb->show_errors();

    add_action( \'wp_enqueue_scripts\', \'my_enqueue\' );
    function my_enqueue() {
        wp_enqueue_script( \'ajax-script\',plugins_url(\'firstJquery.js\', __FILE__), array(\'jquery\') );
        wp_localize_script( \'ajax-script\', \'my_ajax_object\', array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) ) );
   }

    add_action(\'wp_ajax_getListings\', \'getListings\');
    add_action(\'wp_ajax_nopriv_getListings\', \'getListings\');

    function getListings(){
    global $wpdb;
    $results = $wpdb->get_results( "SELECT * FROM  wp_wpbdp_listings", OBJECT );
    echo $results;
    wp_die();
    }
?>
然后,我在一个单独的文件中有一个小Jquery脚本:

//firstJQuery。js公司

(function($) {

    $.ajax({
        url: my_ajax_object.ajax_url,
        type: \'GET\',
        dataType: \'json\', // added data type
        action: \'getListings\',
        success: function(res) {
            console.log(res);
        }
    });

}(jQuery))
我收到了一个400个错误的请求,当它击中管理ajax时。php端点。我在我的任何日志(apache、php或WordPress)中都没有收到其他错误,并且已经打开了wp配置中的调试。php文件。有人有什么建议吗?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

代码的PHP部分看起来或多或少还行。(存在一些安全问题,您不应该回显对象数组,但当您看到它时就会得到它)。

但是由于JS中的错误,您的代码无法工作。

您应该将“操作”作为数据而不是设置发送。。。所以应该是这样的:

$.ajax({
    url: my_ajax_object.ajax_url,
    type: \'GET\',
    dataType: \'json\', // added data type
    data: {
        action: \'getListings\',
    },
    success: function(res) {
        console.log(res);
    }
});

相关推荐

WP check_ajax_referer()不起作用

我正在使用ajax开发预订表单。我面临两个问题。一种是当我在页面或帖子中使用表单的短代码时,在WP后端5.2.3版本中显示表单。另一个是当我使用这个函数check\\u ajax\\u referer()检查nonce字段时。表单不显示在“查看”页面中。仅在视图页面中显示-1。/* Plugin Name: Ajax Reservation Form Plugin URI: http://example.com Description: Reservation Form V