TheDeadMedic не совсем прав. WordPress имеет встроенные возможности AJAX. Отправьте ваш ajax-запрос в /wp-admin/admin-ajax.php, используя POST с аргументом 'action':
jQuery(document).ready(function(){
jQuery(".foobar").bind("click", function() {
jQuery(this).toggleClass('clicked');
jQuery.ajax({
type:'POST',
data:{action:'my_unique_action'},
url: "http://mysite/wp-admin/admin-ajax.php",
success: function(value) {
jQuery(this).html(value);
}
});
});
});
Затем подключите его к плагину следующим образом, если вы хотите, чтобы он работал только для зарегистрированных пользователей:
add_action('wp_ajax_my_unique_action',array($sample_plugin,'doAjax'));
или подключите его так, чтобы он работал только для незарегистрированных пользователей:
add_action('wp_ajax_nopriv_my_unique_action',array($sample_plugin,'doAjax'));
Используйте оба, если хотите, чтобы это работало на всех.
admin-ajax.php уже использует некоторые имена действий, поэтому убедитесь, что вы просматриваете файл и не используете те же имена действий, иначе вы случайно попытаетесь сделать такие вещи, как удаление комментариев и т. Д.
EDIT
Извините, я не совсем понял вопрос. Я думал, вы спрашиваете, как сделать запрос AJAX. В любом случае, я бы попробовал две вещи:
Во-первых, пусть ваша функция отображает только слово AJAX без тега a
. Затем попробуйте изменить ваш AJAX-вызов, чтобы он имел как успешный, так и полный обратный вызов:
jQuery(document).ready(function(){
jQuery(".foobar").bind("click", function() {
var val = '';
jQuery(this).toggleClass('clicked');
jQuery.ajax({
type:'POST',
data:{action:'my_unique_action'},
url: "http://mysite/wp-admin/admin-ajax.php",
success: function(value) {
val = value;
},
complete: function(){
jQuery(this).html(val);
}
});
});
});