Передача переменной jQuery в functions.php Wordpress

78
10

Я отправляю переменную x jQuery в файл php.

Это мой jQuery с ajax:

  jQuery(document).ready(function($) {

var x = jQuery('#sbering option:selected').val();
jQuery('#optionvalue').html(x);

jQuery.ajax({
url: frontEndAjax.ajaxurl,
data: {
'action':'my_ajax_function',
'id' : x
},
success:function(data) {
console.log(data);
},
});
});

Это функция, в которой я отправляю переменную x:

function my_ajax_function() {

if(isset($_REQUEST['id'])) {
$aux = $_REQUEST['id'];
echo "ID: " . $aux;
}
var_dump($aux);
...

вместо того, чтобы печатать как $ aux, так и var_dump ($ aux) на экране, они видны только в консоли, а $ aux in php - Null.

Image1 Image2

Что я делаю не так?

спросил(а) 2021-01-19T19:00:17+03:00 6 месяцев, 2 недели назад
1
Решение
126

проблема в

$aux = json_decode($_POST['id'])

просто используйте $_POST['id'] только для получения значения

и json_encode(...) чтобы отправить ответ

EDIT: также заметила ошибку в вашем сообщении

jQuery.post(aurl, {id: x}, 'json');

Неправильно, потому что вам не хватает полной функции или done() обещания

Решение 1:

jQuery.post(aurl, {id: x}, function(response) {
console.log(response); // just an example
}, 'json');

Решение 2:

jQuery.post(aurl, {id: x}, null, 'json');

Решение 3. Использование $.ajax (что равно jQuery.ajax), как указано в другом ответе

Некоторые полезные URL:

Ajax: http://api.jquery.com/jquery.ajax/

Сообщение: http://api.jquery.com/jquery.post/

Получить: http://api.jquery.com/jquery.get/

ответил(а) 2021-01-19T19:00:17+03:00 6 месяцев, 2 недели назад
46

Сделайте запись AJAX в файл следующим образом:

$.ajax({    
url:'address/to/your/file.php',
type: 'post',
data: {'JSON' : JSON},
done: function(data) {
// this is for testing
}
}).fail (function() {
alert('error');
}).always(function(data) {
alert(data);
//Loading or animation until you get a response back (if needed)
});
});

И ваш PHP файл должен быть примерно таким:

<?php

if(isset($_POST['AJAX'])) { //Checks if there is a POST request
$data = $_POST['AJAX']; //Then Assigns the data in the Post request to $data

.....

} else {
echo 'Error: No Data recieved';
}

?>

ответил(а) 2021-01-19T19:00:17+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема