【发布时间】:2019-01-12 15:31:53
【问题描述】:
我已经浏览了这个网站上的 21 篇不同的帖子,以及谷歌上的许多其他帖子,目前在第 13 页,我真的要哭了。我是一名初级开发人员,我真的很难让它发挥作用。由于某种原因,我似乎无法理解它。
我正在尝试创建一个允许我将 blob 文件上传到 WordPress 媒体库的插件,但它失败了。
插件结构是这样的:
ajax_test/
-- ajax_test.php
-- assets/
-- -- js/
-- -- -- uploader.js
在一个名为 uploader.js 的文件中,我有以下代码:
mediaRecorder.addEventListener('stop', function() {
audio.src = URL.createObjectURL(new Blob(recordedChunks));
downloadLink.href = URL.createObjectURL(new Blob(recordedChunks));
downloadLink.download = 'file' + Date.now() + '.wav';
downloadLink.classList.remove('hide');
var blob = new Blob(recordedChunks);
var fd = new FormData();
fd.append('fname', 'test.wav');
//fd.append('data', event.target.result);
fd.append('file', blob);
fd.append('action', 'send_message');
console.log('about to ajax');
$.ajax({
url: ibenicUploader.ajax_url,
type: 'POST',
data: fd,
cache: false,
processData: false, // Don't process the files
contentType: false, // Set content type to false as jQuery will tell the server its a query string request
success: function(data, textStatus, jqXHR) {
if( data.response == "SUCCESS" ){
console.log('success');
} else {
console.log('error');
}
}
});
console.log('after ajax');
});
在 ajax_test.php 文件中我有这段代码:
function ibenic_enqueue() {
wp_enqueue_script( 'ibenic-uploader', plugins_url( 'assets/js/uploader.js', __FILE__ ), array('jquery'), '1.0', true );
wp_localize_script( 'ibenic-uploader', 'ibenicUploader',
array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'ibenic_enqueue' );
在控制台中我得到
关于ajax
在ajax之后
/wp-admin/admin-ajax.php 400(错误请求)
即使我将 ibenicUploader.ajax_url, 更改为完整路径,我也会遇到同样的错误。
谁能帮我把这个文件上传到wordpress
【问题讨论】:
-
admin-ajax.php是一个 wordpress 核心文件。我没碰过所以不知道。而ibenicUploader.ajax_url则返回wp-admin/admin-ajax.php的完整路径 -
@magenta - 抱歉,没有。您正在谈论一个 wordpress 钩子的操作。该操作是针对 FormData 的,与添加 add_action 无关 - 一个是 JS,另一个是 PHP。
-
你可能已经解决了这个问题,或者可能已经放弃了,但是你能把你的函数
send_message的php代码贴出来。