2010-09-12 4 views
1

Я пытаюсь использовать встроенный ajax Wordpress для обработки загрузки с использованием сценария AjaxUpload. Сценарий был обновлен в августе, и теперь я не могу заставить его работать.

http://valums.com/ajax-upload/

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

jQuery.noConflict(); 
jQuery(document).ready(function($) { 

/* 
* AJAX UPLOAD 
* http://valums.com/ajax-upload/ 
*/ 


var uploader = new qq.FileUploader({ 
    // pass the dom node (ex. $(selector)[0] for jQuery users) 
    element: document.getElementById('file-uploader'), 
    // path to server-side upload script 
    action: ajaxurl, 
     params: { 
     type: "POST", 
     action: 'save_function', 
     key: 'logo', 
     }, 
    onComplete: function(id, fileName, responseJSON){ 

     console.debug("Here is the response: %o", responseJSON); 
    } 

}); 


}); //end document.ready functions 

мое действие установлено ajaxurl, который является константой для /wp-admin/admin-ajax.php, я принял меры в Params так, чтобы администратор-Ajax будет знать, какие функции я хотел бежать обрабатывать вещи. и моя функция обратного вызова

function childtheme_data_save_callback() { 
    global $my_shortname; 


    $id = $_POST['key']; // option name 

     $upload = wp_handle_upload($_FILES['qqfile']['tmp_name'], array('test_form' => false));   

    if(!empty($upload['error'])) { //there IS an error message 
     die($upload['error']); 
    } 
    else { // there is NOT an error 
     $upload_image = $my_data; //preserve current data 
     $upload_image[$id] = $upload['url']; 
     update_option($my_shortname .'_options', $upload_image) ; 
     die($upload['url']); //response sends url back to jquery 
    } 


} 


add_action('wp_ajax_save_function', 'childtheme_data_save_callback'); 

который вызывается, и мое сообщение об ошибке отображается в моей консоли firebug. вот ошибка

Файл не заполнен. Загрузите что-нибудь более существенное. Эта ошибка также может быть вызвана отключением загрузки в вашем php.ini или post_max_size, который определяется как меньше, чем upload_max_filesize в php.ini.

вмешиваются ж/изменение messasge ошибки до $ _FILES это всегда возвращается пустой массив, даже если в консоли он говорит POST заполняется ж/материал, который выглядит как

ÿØÿà�JFIF��_�_��ÿÛ�C� $.' ",#(7),01444'9=82<.342ÿÛ�C 2!!22222222222222222222222222222222222222222222222222ÿÀ�° 

и многое другое. хотя теперь я вижу, что консоль также говорит, что заголовки ответов имеют тип контента: Content-Type text/html; кодировка = UTF-8

и заголовки запроса принимаем: Принять текст/HTML, приложение/XHTML + XML, приложение/XML; д = 0,9, /; д = 0,8

проблема то не отправлять POST в кодировке «multipart/form-data»? если да, то как мне переключиться на это, так как я использую этот плагин, а не тег формы? если нет, то я уже давно смущен.

+0

О, и я только что узнал, что b/ci использует Firefox, скрипт пытается использовать xhr для загрузки файла ..., который я «догадываюсь» объясняет, почему массив $ _FILES пуст, но теперь у меня нет идеи что использовать вместо этого. это тоже не работает для меня в IE. – helgatheviking

ответ

0

Вам необходимо проверить qq-файл GET, и если он установлен, он содержит имя вашего файла, а файл - в данных сообщения. Скорее всего, пакет js содержит примеры/примеры в разных сценариях на стороне сервера. Также обратите внимание, что если переменная GET qqfile не установлена, вы должны вернуться к загрузке с помощью FILE [] для более старой поддержки браузера.

Смежные вопросы