Я пытаюсь использовать встроенный в 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, я передал действие в параметрах, чтобы admin-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.
Перебирая с изменением сообщения об ошибке на $ _FILES, он всегда возвращает пустой массив, даже если в консоли он говорит, что POST заполнен w / stuff, который выглядит как
ÿØÿà�JFIF��_�_��ÿÛ�C� $.' ",#(7),01444'9=82<.342ÿÛ�C 2!!22222222222222222222222222222222222222222222222222ÿÀ�°
и более. хотя теперь я вижу, что консоль также говорит, что заголовки ответа имеют тип содержимого:
Content-Type text / html; кодировка = UTF-8
и заголовки запроса принимают:
Принять текст / html, application / xhtml + xml, application / xml; q = 0,9, / ; q = 0,8
проблема в том, что не отправлять POST в кодировке "multipart / form-data"? если так, как я могу переключиться на это, так как я использую этот плагин, а не тег формы? если нет, то я был на некоторое время в тупике.