La richiesta Ajax restituisce il codice completo della pagina
Ho un problema con una chiamata Ajax su un sito che ho appena preso in gestione.
Ho utilizzato chiamate simili su altri siti quindi non sono sicuro se sia una restrizione dei plugin o un conflitto, ma ogni suggerimento è benvenuto!
La chiamata sta restituendo il contenuto completo della pagina invece del contenuto dell'ID del post che mi aspettavo. Ho aggiunto un alert al js prima della chiamata ajax e la variabile "thisPost" è impostata correttamente. Ho provato diversi metodi ma nessuno sembra permettermi di restituire il post_id come oggetto json. Alla fine il risultato sarà un oggetto json con più dettagli oltre al post_id ma l'ho semplificato finché non riesco a farlo funzionare.
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";
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>Informazioni sul Lavoro 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='#'>Link al PDF da seguire</a>";
// apre un messaggio di benvenuto non appena la finestra si carica
Shadowbox.open({
content: contents.concat(pdf_button),
player: "html",
title: "Dettagli Evento",
height: 600,
width: 500
});
}
});
});
});

Ho letto questo e ho pensato tra me e me, "No, l'ho chiamato correttamente". 2 ore dopo e ancora non riuscivo a capire il problema, poi sono tornato su questo... avevo scritto ajaxurl invece di ajaxUrl. Ugh....

Lol sì... anni dopo... stavo usando this.ajaxURL
in un contesto dove this
non esisteva.
