Solución al error 400 Bad Request al usar AJAX en un tema personalizado
7 mar 2018, 16:40:00
Vistas: 26.5K
Votos: 1
He estado trabajando en un tema personalizado en el que estoy tratando de implementar una presentación de búsqueda mediante AJAX. He construido todo según varios tutoriales y guías, pero al inspeccionar la llamada a admin-ajax, sigue devolviendo errores 400... Me he quedado sin ideas y esperaba que alguien pudiera arrojar algo de luz sobre este problema.
functions.php
function load_search_results(){
$q = $_REQUEST['query'];
$post_type = $_REQUEST['post_type'];
$args = array(
'post_type' => $post_type,
'post_status' => 'publish',
's' => $q,
);
$search = new WP_Query($args);
if ($search->have_posts()){
echo json_encode('tiene entradas');
} else {
echo json_encode('no se encontraron entradas');
}
wp_die();
}
add_action('wp_ajax_load_search_results', 'load_search_results');
add_action('wp_ajax_nopriv_load_search_results', 'load_search_results');
Registrando los scripts en functions.php también
wp_register_script('ajax-search', THEME_DIR .'/assets/js/ajax/search.ajax.js', array('jquery'), '1.0', false);
wp_enqueue_script('ajax-search');
wp_localize_script('ajax-search', 'myAjax', array('ajax_url' =>admin_url('admin-ajax.php')));
search.ajax.js
(function($) {
$(document).on('submit', '.controls-search', function(){
var $form = $(this);
var $input = $form.find('input[name="s"]');
var query = $input.val();
var $content = $('.licence');
$.ajax({
type: 'POST',
post_type: 'shuffle_licence',
url: myAjax.ajax_url,
data: {
action: 'load_search_results',
query: query
},
beforeSend: function(){
$input.prop('disabled', true);
$content.addClass('loading')
},
succes: function(response){
$input.prop('disabled', false);
$content.removeClass('loading');
$content.html(response);
},
dataType: 'html',
contentType: 'application/json',
});
return false;
});
}(jQuery))

Alex Hermans
21
Comentarios
Todas las respuestas a la pregunta
1
Preguntas relacionadas
1
respuestas
3
respuestas