我正在尝试使用wordpress'内置的ajax来使用AjaxUpload脚本处理上传。该脚本于8月更新,现在我无法让它继续工作。
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中传递了一个动作,以便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被定义为小于php.ini中的upload_max_filesize而引起的。
涉及将错误消息更改为$ _FILES它总是返回一个空数组,即使在控制台中它表示POST已填充w /看起来像
ÿØÿà�JFIF��_�_��ÿÛ�C� $.' ",#(7),01444'9=82<.342ÿÛ�C 2!!22222222222222222222222222222222222222222222222222ÿÀ�°
等等。虽然现在我看到控制台也说响应头有一个内容类型: Content-Type text / html;字符集= UTF-8
并且请求标头接受: 接受text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8
是不是以“multipart / form-data”编码发送POST的问题?如果是这样我怎么切换到那,因为我使用这个插件而不是表格标签?如果没有,我现在已经被困了一段时间了。
答案 0 :(得分:0)
您需要检查GET变量qqfile,如果已设置,则它包含您的文件名,而文件位于发布数据中。您最有可能包含各种服务器端脚本中的示例/示例的js包。另请注意,如果未设置GET qqfile变量,则应回退到使用FILE []加载较旧的浏览器支持。