Cererea Ajax returnează codul complet al paginii
Am o mică problemă cu un apel Ajax pe un site pe care tocmai l-am preluat.
Am mai folosit apeluri similare pe alte site-uri, așa că nu sunt sigur dacă este o restricție sau un conflict cu vreun plugin, dar orice sugestii sunt binevenite!
Apelul returnează conținutul complet al paginii în loc de conținutul ID-ului postării, care este ceea ce mă așteptam. Am adăugat o alertă în JavaScript înainte de apelul Ajax și variabila "thisPost" este setată corect. Am încercat diverse metode diferite, dar niciuna nu pare să-mi permită să returnez post_id ca obiect json. În final, rezultatul va fi un obiect json cu mai multe detalii decât doar post_id, dar l-am simplificat până reușesc să-l fac să funcționeze.
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>Informații Job 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 către PDF va urma</a>";
// deschide un mesaj de bun venit imediat ce se încarcă fereastra
Shadowbox.open({
content: contents.concat(pdf_button),
player: "html",
title: "Detalii Eveniment",
height: 600,
width: 500
});
}
});
});
});

Am citit asta și m-am gândit, "Nu, l-am numit corect". 2 ore mai târziu și tot nu-mi puteam da seama care era problema, până când am revenit la asta... Am scris ajaxurl în loc de ajaxUrl. Of...

Haha, da... ani mai târziu... foloseam this.ajaxURL
într-un context în care this
nu exista.
