spoilerПростите, если вопрос покажется глупым.. запутался
Здравствуйте, для диагностики 500 ответа ajax-запроса написал плагин-тест.
Когда обработчик в головном файле все работает.
Когда обработчик в файле test.php (как в примере), при локализации на admin_url( 'admin-ajax.php' ) - приходит 400 ответ
Когда обработчик в файле test.php при локализации на test.php (как в примере) - приходит 500 ответ
Как сделать правильно, чтобы обработка запроса была в отдельном файле ?
Три файла:
ajaxtest.php
<?php
/*
Plugin Name: ajaxtest
Plugin URI: (_*_)
Description: ajax test
Version: 1.0
Author URI: (_*_)
*/
include_once(plugin_dir_url( __FILE__ ) .'/test.php');
function js_ajaxtest(){
wp_register_script('js_ajaxtest', plugins_url('/test.js', __FILE__)); wp_enqueue_script('js_ajaxtest');
wp_localize_script( 'js_ajaxtest', 'ajaxurl', plugins_url('/test.php', __FILE__) );
}
add_action('wp_enqueue_scripts', 'js_ajaxtest');
add_action('admin_enqueue_scripts', 'js_ajaxtest');
function testajaxbutton(){
$txt='<div id="ajaxtest">Тестировать аякс</div>';
return $txt;
}
add_shortcode('testajaxbutton','testajaxbutton');
?>
test.php
<?php
function ajaxtest(){ wp_send_json('Тест удачен'); }
add_action('wp_ajax_ajaxtest','ajaxtest');
?>
test.js
jQuery(document).ready(function(jQuery){
jQuery(document).on('click', '#ajaxtest', function(){
var name = 'Вася';
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {
action : 'ajaxtest',
name : name,
dataType: 'JSON',
},
success:function(response) {
jQuery( '#result' ).html( response );
console.log(response);
},
error: function(xhr, textStatus, errorThrown) {
console.log(xhr);
}
});
});
});