Я пытаюсь сделать плагин, используя онлайн-корс в WP плагинах.Проблемы с ajax в плагине WordPress
Iam имеет серьезные трудности с частью ajax плагина (его создателем списка адресов электронной почты).
Это мой .js JQuery код, который должен выполнить некоторый PHP-код на локальном хосте, и показать сообщение успеха/ошибки в окне предупреждения:
jQuery(document).ready(function($){
var wpajax_url = document.location.protocol + '//' + document.location.host + 'wordpress_plugin_course/wp-admin/admin-ajax.php?action=plb_save_subscribtion';
$('form.plb-form').bind('submit', function(){
$form = $(this);
var form_data = $form.serialize();
$.ajax({
'method':'post',
'url':wpajax_url,
'data':form_data,
'dataType':'json',
'cache':false,
'success':function(data, textStatus){
if(data.status == 1){
$form[0].reset();
alert(data.message);
} else{
var msg = data.message +'\r'+ data.error + '\r';
$.each(data.errors,function(key,value){
msg += '\r';
msg += '- ' + value;
});
alert(msg);
}
},
'error':function(jqXHR, textStatus, errorThrown){
}
});
return false;
});
});
РНР части (Да, с Подписка на B в нем преднамеренно, потому что у меня были проблемы с этим грамматически, и я решил, что будет проще просто придерживаться B во всех случаях).
add_action('wp_ajax_nopriv_plb_save_subscribtion', 'plb_save_subscribtion');
add_action('wp_ajax_plb_save_subscribtion', 'plb_save_subscribtion');
add_action('wp_enqueue_scripts', 'plb_public_scripts');
function plb_public_scripts(){
wp_register_script('profi-list-builder-js-public', plugins_url('/js/public/profi-list-builder.js', __FILE__), array('jquery'),'1.0',true);
wp_enqueue_script('profi-list-builder-js-public');
}
Иам не показывает функцию plb_save_subscribtion, потому что его сотни строк кода в целом и код работает отлично: он сохраняет новые подписки на подписной пост в админке, а затем возвращает сообщение successs/ошибка в. json для клиента.
Что мне нужно, чтобы сделать jQuery сейчас, это сделать это через ajax и поместить тот же клиент реакции plb_save_subscribtion в окно предупреждения.
Я потратил буквально весь день на поиск в Интернете, пытаясь решить эту проблему, но безрезультатно. Я из идей, так что я отправляю его здесь. Что-то не так с этим кодом? Если нет, где я должен искать проблему (потому что код скопирован/вставлен и СЛЕДУЕТ работать нормально, но это не так)? Если я помещаю сообщение с простым предупреждением внутри верхней части функции, появляется предупреждающее сообщение, как и предполагалось. Но когда я нажимаю кнопку отправки в форме, перезагружается страница, и я возвращаю сообщение в .json, без окна предупреждения, без ajax. Кто-то?
Это не потому, что вы копируете/вставляете код, который будет работать. Как вы вставляете файл jQuery и запускаете wp_ajax_youraction, чтобы заставить его работать для URL-адреса администратора? Если вы получаете json-ошибку, вы закрываете ошибку. – Benoti
Я думаю ** action = plb_save_subscribtion ** должно быть ** action = plb_save_subscription ** (но, возможно, орфографическая ошибка соответствует действию). На самом деле проблема запроса AJAX без серверной части на самом деле не описывается. –