Wordpress admin-ajax.php Ошибка - PullRequest
       7

Wordpress admin-ajax.php Ошибка

2 голосов
/ 10 августа 2010

У меня есть пара запросов AJAX, используемых на странице настроек темы. Оба раньше работали просто отлично, но теперь первое работает, а второе каждый раз терпит неудачу - сбой выглядит так в Firebug: http://cl.ly/1w5u, и это в Webkit: cl.ly/1wYn. Я не получаю никакого ответа. Дело в том, что первый работает просто отлично.

Вот JS (jQuery), который отправляет:

jQuery('.cropimage').click(function(){
 var pid = jQuery('#tump_header_img').val();
 var path = jQuery('#header_img_edit .container img').attr('src');
 var dimensions = jQuery('#tump_header_img_position').val();

 var security = jQuery('#_ajax_nonce_crop_apply_image').val();

 jQuery.post(ajaxurl, {pid: pid, action: 'crop_apply_header_image', path: path, dimensions: dimensions, security: security}, function(response) {
  console.log(response);
 });
});

ajaxurl правильный, это тот же URL, который используется в запросе, который работает. Я пытался все убрать и просто пытался получить ответ, но безрезультатно.

Хорошие вещи в functions.php:

    add_action('wp_ajax_crop_apply_header_image', 'crop_apply_header_image');

    function crop_apply_header_image() {
     check_ajax_referer('crop_apply_header_image', 'security'); 

     $data = $_POST;
     unset($data['security'], $data['action']);

     $dimensions = explode(',',$data['dimensions']);

     $extension_pos = strrpos($data['path'], '/'); // find position of the last dot, so where the extension starts
     $newpath = substr($data['path'], 0, ($extension_pos +1)) . 'cropped-' . substr($data['path'], ($extension_pos + 1));

     update_option( 'tump_header_img_path', $newpath );

     die( wp_crop_image($data['pid'],$dimensions[0],$dimensions[1],$dimensions[2],$dimensions[3],940,200) );
}

В любом случае, насколько я могу судить, ничего не получается. Я не знаю, что случилось, любая помощь очень ценится!

1 Ответ

3 голосов
/ 11 августа 2010

Если wp_crop_image выдаст ошибку, вы это увидите? У вас включена отладка ? Вы видите что-то, когда вы помещаете var_dump($data) туда?

Попробуйте перехватить поток управления, где он попадает на ваш сервер, на admin-ajax.php. Поместите var_dump, который срабатывает только при вызове вашего кода:

if ($_REQUEST['action'] == 'crop_apply_header_image') {
   var_dump($_REQUEST);
   die();
}

Если вы видите это, ошибка происходит где-то в коде WordPress, но между этой точкой и вашей функцией-обработчиком не слишком много. Ваше действие должно сработать в конце оператора switch в части default:

default :
    do_action( 'wp_ajax_' . $_POST['action'] );
    die('0');
    break;
endswitch;

Попробуйте напечатать что-нибудь из функции do_action (но только если $_REQUEST['action'] == 'crop_apply_header_image') и перейдите оттуда.

Если у вас настроен XDebug или Zend Debugger (стоит потраченного времени и хлопот), вы можете пройти по коду без всех этих операторов печати. Но для такой простой отладки это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...