出力が理由を知らないため、私のajaxコール出力は常に0を示しています
functions.php
このコードがあります
function get_data() {
$abc = '1';
$result = $wpdb->get_results("SELECT * FROM ".$wpdb->options ." WHERE option_name LIKE '_transient_%'");
echo $result; //returning this value but still shows 0
wp_die();
}
add_action( 'wp_ajax_nopriv_get_data', 'get_data' );
add_action( 'wp_ajax_get_data', 'get_data' );
そして、私のajax呼び出しはJavaScriptです
$('body').on("click", ".re-reset-btn", function(e){
var panel = $('#re-compare-bar');
$.ajax({
type : "GET",
dataType : "json",
url : "/wp-admin/admin-ajax.php",
data : {action: "get_data"},
success: function(response) {
alert("Your vote could not be added");
alert(response);
}
});
$("#re-compare-bar-tabs div").remove();
$('.re-compare-icon-toggle .re-compare-notice').text(0);
});
プラグインを使用せずにwordpressでajax呼び出しを行っていますが、渡したものを取得していません。$ abcを出力しても、0が表示されます。
バックエンドには、WordPress自体によって定義されたグローバルajaxurl変数があります。
この変数はフロントエンドでWP=によって作成されません。つまり、フロントエンドでAJAX呼び出しを使用する場合は、このような変数を自分で定義する必要があります。 。
これを行う良い方法は、wp_localize_scriptを使用することです。
AJAX呼び出しがmy-ajax-script.jsファイルにあると仮定し、次のようにこのJSファイルにwp_localize_scriptを追加します。
function my_enqueue() {
wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery') );
wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue' );
JSファイルをローカライズした後、JSファイルでmy_ajax_objectオブジェクトを使用できます。
jQuery.ajax({
type: "post",
dataType: "json",
url: my_ajax_object.ajax_url,
data: formData,
success: function(msg){
console.log(msg);
}
});
admin_url('admin-ajax.php');
を使用してadmin-ajax.phpを追加します
<script type="text/javascript">
$('body').on("click", ".re-reset-btn", function(e){
var panel = $('#re-compare-bar');
$.ajax({
type : "POST",
dataType : "json",
url : "<?php echo admin_url('admin-ajax.php'); ?>",
data : {action: "get_data"},
success: function(response) {
alert("Your vote could not be added");
alert(response);
}
});
$("#re-compare-bar-tabs div").remove();
$('.re-compare-icon-toggle .re-compare-notice').text(0);
});
</script>
応答で0を取得している場合は、ajax呼び出しが正しく機能していることを意味します。ただし、関数get_dataで$ wpdbをグローバル変数として定義していません。エラーログを確認してください。そこにエラーが表示されているはずです。試してください:
function get_data() {
global $wpdb;
$abc = '1';
$result = $wpdb->get_results("SELECT * FROM ".$wpdb->options ." WHERE option_name LIKE '_transient_%'");
echo $result; //returning this value but still shows 0
wp_die();
}