2013-03-29 4 views
5

Использование ajax и wordpress (попытка сделать это правильно). Это для меня новичок, но я работал с ним еще больше. Казалось, что у меня возникли проблемы, поэтому я сломал свой код до самого базового уровня, и я даже не могу заставить его работать !!! Я чувствую, что я просто расстраиваюсь, и это заставляет меня пропустить простую ошибку. Что-то не так с этим?Сообщение об успехе Ajax возвращает HTML моей домашней страницы

Мой JQuery:

$.post(
    ajaxurl, // http://localhost/mysite/wp-admin/admin-ajax.php 
    {action: "post-save"}, 
    function(response){ 
     alert(response); 
    } 
); 

Мой PHP:

function update_post(){ 
    echo json_encode(array("success" => "all systems go"), JSON_FORCE_OBJECT); 
    exit; 
} 
add_action('wp_ajax_post-save', 'update_post'); 

Конечным результатом является бдительные работы, что означает $ .post успешно (? Справа), но возвращаемый переменная response является источник HTML моей странице ...

ответ

3

я понял это ...

Это может помочь новичкам, как я, кто совершает ту же ошибку, поэтому я отвечу на свой вопрос :)

Оказывается, я не был в системе, зайдите на фигуру. Ответ был странным, хотя и помог мне отбросить меня, вернув всю домашнюю страницу. Причина для этого я блокировал мои функции файлов, которая включает в Ajax Ответчик так:

function block_users() 
{ 
    if(!current_user_can('delete_pages')) { 
     wp_redirect(get_home_url(), 301); 
     exit; 
    } 
} 
add_action('admin_init','block_users'); 

Я должен был знать, чтобы войти (подумала я), но такие неожиданные результаты, и это была пятница :)

Также обратите внимание на всех, кто натыкается на это: если вы хотите, чтобы кто-то делал ajax, не будучи включенным в систему, используйте версию wp_ajax без привилегий, wp_ajax_nopriv.

add_action('wp_ajax_nopriv_action', 'function'); 

Вместо

add_action('wp_ajax_action', 'function'); 

бывших не требует разрешений, то есть быть авторизованы, чтобы сделать AJAX запросов.

+0

Да у меня такая же проблема, я прокомментировал эти строки. тогда это нормально, но как я могу перенаправить пользователей на домашнюю страницу? моя функция - function themeblvd_redirect_admin() { if (! current_user_can ('edit_posts')) { wp_redirect (site_url()); выход; } } add_action ('admin_init', 'themeblvd_redirect_admin'); – Naveenbos

2

У меня была такая же проблема, и решение было добавить DOING_AJAX в функцию

function block_users() 
{ 
    if(!current_user_can('delete_pages') && (! defined('DOING_AJAX') || ! DOING_AJAX)) { 
     wp_redirect(get_home_url(), 301); 
     exit; 
    } 
} 
add_action('admin_init','block_users'); 
Смежные вопросы