#ajax #wordpress
#аякс #wordpress
Вопрос:
Это глупый вопрос, но здесь идет —
Я пытаюсь разобраться в AJAX-вызовах WordPress. В моем PHP-модуле у меня есть
function example_ajax_request() {
$fruit = $_POST['fruit'];
echo $fruit;
die();
}
add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );
В моем JS-файле у меня есть
jQuery(document).ready(function ($) {
console.log('ajaxurl', ajaxurl);
// This is the variable we are passing via AJAX
var fruit = 'Banana';
console.log('call fruit', fruit);
// This does the ajax request (The Call).
$.ajax({
url: ajaxurl, // Since WP 2.8 ajaxurl is always defined and points to admin-ajax.php
data: {
'action': 'example_ajax_request', // This is our PHP function below
'fruit': 'apple' // This is the variable we are sending via AJAX
},
success: function (data) {
// This outputs the result of the ajax request (The Callback)
window.alert('data', data);
},
error: function (errorThrown) {
window.alert('error', errorThrown);
}
});
});
Чего я не понимаю, так это того, что когда я загружаю страницу, я получаю всплывающее окно с «данными», которое указывает на функцию успеха, но не содержит фактических данных ( echo 'someResult';
часть). Кроме того, я не получаю никаких ошибок в консоли.
Комментарии:
1. Я думаю, потому что alert принимает только один параметр. Измените его на alert(‘data’ data) или используйте console.log
2. Я попробовал оба из них, и кажется, что переменная data по-прежнему пуста
3. добавьте тип: ‘POST’ в параметры ajax-вызова
Ответ №1:
@Aliakseyenka Игорь дал мне идею, и мой окончательный код таков::
<?php function example_ajax_request() {
$fruit = $_REQUEST['fruit'];
echo '{fruit:''.$fruit.''}';
die();
}
// This bit is a special action hook that works with the WordPress AJAX functionality.
add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );
а также
jQuery(document).ready(function ($) {
console.log('ajaxurl', ajaxurl);
// This is the variable we are passing via AJAX
var fruit = 'Banana';
console.log('call fruit', fruit);
// This does the ajax request (The Call).
$.ajax({
url: ajaxurl, // Since WP 2.8 ajaxurl is always defined and points to admin-ajax.php
data: {
'action': 'example_ajax_request', // This is our PHP function below
'fruit': 'apple' // This is the variable we are sending via AJAX
},
success: function (data) {
// This outputs the result of the ajax request (The Callback)
console.log('the data is: ', data);
},
error: function (errorThrown) {
window.alert('error ' errorThrown);
}
});
});
Проблема оказалась в $_POST
, а не в ECHO
.