У меня проблема с AJAX, возвращающим 0 всегда!
Я сделал все по книге и не могу понять, что не так? Пожалуйста помоги!!
Вот мой вызов Ajax:
//Pass data through AJAX
var amountToConvert = price;
jQuery.ajax({
type:"POST",
url: "../../wp-admin/admin-ajax.php", // our PHP handler file
action: "ajaxConversion",
data: {
amount: amountToConvert
},
success:function(data){
alert(data);
},
error: function(errorThrown){
alert(errorThrown);
}
});
return false;
И функция в functions.php:
function ajaxConversion(){
$amount = mysql_real_escape_string($_POST['amount']);
echo $amount;
die();
};
add_action('wp_ajax_nopriv_ajaxConversion', 'ajaxConversion');
add_action('wp_ajax_ajaxConversion', 'ajaxConversion');
admin_url( 'admin-ajax.php' )
чтобы получить URL AJAX, а не какой-то готовый URL.Ответы:
Не могли бы вы разместить действие (ajaxConversion) в ваших данных и проверить?
источник
с помощью
wp_die();
в конце функции AJAX исправило проблему для меня.например
источник
Для меня хитрость заключалась в том, чтобы добавить
wp_ajax_nopriv
действия. Я протестировал скрипт в одном браузере, когда я вошел в WP Admin, а затем я попробовал тот же скрипт в Chrome и понял, что скрипт не работает. После того как я поставилwp_ajax_nopriv
, все начало работать. :)источник
Я бы порекомендовал использовать wp_send_json_success () и wp_send_json_error () на стороне сервера. Вам не нужно беспокоиться о die () и т. Д., И переменная «status» отправляется автоматически, так намного проще. Например
Результатом будет что-то вроде этого:
Итак, вы можете легко извлечь значения в вашем вызове ajax:
Еще одна распространенная вещь, с которой я столкнулся - опечатки в названии действия. Они должны быть wp_ajax_nopriv_ {action} или wp_ajax_ {action} при входе в систему. Например, wp-ajax_nopriv, это то, что я делал несколько раз в прошлом.
источник
Для меня это был факт, что я использовал
return
вместоecho
своей функции PHP. Изменяя это, чтобыecho
исправить это.источник