我正在用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文件。有人有什么建议吗?
最合适的回答,由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);
}
});