Petición Ajax devolviendo el código completo de la página
Estoy teniendo un pequeño problema con una llamada ajax en un sitio del que acabo de hacerme cargo.
He usado llamadas similares antes en otros sitios así que no estoy seguro si es una restricción o conflicto con algún plugin, ¡pero cualquier idea es bienvenida!
La llamada está devolviendo el contenido completo de la página en lugar del contenido del ID del post que es lo que esperaba. He agregado una alerta al js antes de la llamada ajax y la variable "thisPost" está configurada correctamente. He probado varios métodos diferentes pero ninguno parece permitirme devolver el post_id como un objeto json. Al final la respuesta será un objeto json con más detalles que solo el post_id pero lo he simplificado hasta hacerlo funcionar.
functions.php
function add_calendar_scripts(){
if (is_page_template('template-eventsplanner.php') ) {
wp_register_script('calendar', ( get_bloginfo('template_url') . '/js/calendar.js'), array ('jquery'));
wp_enqueue_script('calendar');
wp_localize_script( 'calendar', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}
}
add_action('wp_head', 'add_calendar_scripts');
function get_full_event_callback(){
global $wpdb;
$response = array();
$post_id = intval($_POST['posted']);
$response[] = array('id'=>$post_id);
$result = json_encode($response);
echo "post_id"; // Aquí solo devolvemos texto plano
die();
}
add_action( 'wp_ajax_nopriv_get_full_event', 'get_full_event_callback' );
add_action( 'wp_ajax_get_full_event', 'get_full_event_callback' );
calendar.js
jQuery(document).ready(function() {
var container = jQuery('body'),
scrollTo = jQuery('.today');
container.animate({
scrollTop: scrollTo.offset().top - container.offset().top + container.scrollTop() - 120
});
Shadowbox.init({
skipSetup: true
});
jQuery('.event_box').click( function(){
var pretext = "<h1>Información del Trabajo de Davis Track Hire</h1>";
var thisPost= jQuery(this).data("event");
var contents, pdf_button;
var data = {
action: 'get_full_event',
dataType: 'json',
posted: thisPost,
};
jQuery.post(MyAjax.ajax_url, data, function(response) {
if(response!=0){
contents = pretext.concat(response);
pdf_button = "<a href='#'>Enlace al PDF a continuación</a>";
// abrir un mensaje de bienvenida tan pronto como se cargue la ventana
Shadowbox.open({
content: contents.concat(pdf_button),
player: "html",
title: "Detalles del Evento",
height: 600,
width: 500
});
}
});
});
});

Leí esto y pensé: "No, lo nombré correctamente". 2 horas después y aún no podía resolver mi problema, volví a esto... Había escrito ajaxurl en lugar de ajaxUrl. Ugh...

Jaja sí... años después... estaba usando this.ajaxURL
en un contexto donde this
no existía.
