Ajax запрос возвращает полный код страницы
У меня возникла небольшая проблема с ajax вызовом на сайте, который я недавно начал поддерживать.
Я использовал похожие вызовы раньше на других сайтах, поэтому не уверен, связано ли это с ограничением плагина или конфликтом, но буду рад любым идеям!
Вызов возвращает полное содержимое страницы вместо содержимого id поста, которое я ожидал получить. Я добавил alert в js перед ajax вызовом, и переменная "thisPost" установлена правильно. Я пробовал различные методы, но ни один не позволяет мне вернуть post_id как json объект. В итоге возвращаемое значение будет json объектом с большим количеством деталей, чем просто post_id, но я упростил код, пока не заработает.
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>Информация о работе 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='#'>Ссылка на PDF будет добавлена</a>";
// открыть приветственное сообщение, как только загрузится окно
Shadowbox.open({
content: contents.concat(pdf_button),
player: "html",
title: "Детали события",
height: 600,
width: 500
});
}
});
});
});

Я прочитал это и подумал: "Нет, я назвал правильно". Через 2 часа я всё ещё не мог понять свою ошибку и вернулся к этому... Оказалось, я написал ajaxurl вместо ajaxUrl. Ох уж...

Лол, да... годы спустя... Я использовал this.ajaxURL
в контексте, где this
не существовало.
