我在做一个上传插件时遇到了一些麻烦。我正在使用ajax进行上传,但是在第一个测试中,我得到了一个400错误的请求错误。有解决办法吗?
这是js代码
(function($){
$(document).ready(function(){
$('#process-upload').on('click', function(e){
e.preventDefault();
var data = new FormData();
data.append('file', $('#imageFile').prop('files')[0] );
data.append('action', 'new_message');
data.append('message', $('#imageMessage').val());
$.ajax({
url: wpu.ajaxurl,
type: 'POST',
contentType: false,
processData: false,
data: data,
success: function(response){
console.log(response);
window.alert('Done!');
}
});
});
});
}(jQuery));这是php:
public function __construct()
{
add_shortcode( 'upload-form', array($this, 'upload_form') );
add_action( 'wp_enqueue_scripts', array($this, 'main') );
add_action( 'admin_ajax_new_message', array($this, 'process_upload') );
add_action( 'admin_ajax_nopriv_new_message', array($this, 'process_upload') );
}
public function main()
{
wp_enqueue_script( 'ajax-upload', plugins_url( 'ajax-upload.min.js' , __FILE__), array('jquery'), null );
wp_localize_script( 'ajax-upload', 'wpu', array(
'ajaxurl' => admin_url('admin-ajax.php')
)
);
}
public function upload_form( $attr, $content = null )
{
ob_start();
?>
Choose file
$_FILES['imageFile']['name'],
'type' => $_FILES['imagefile']['type'],
'tmp_name' => $_FILES['imageFile']['tmp_name'],
'size' => $_FILES['imageFile']['size'],
'error' => $_FILES['imageFile']['error'],
);
$upload = wp_handle_upload( $file , array( 'test_form' => false ) );
var_dump($upload);
}发布于 2020-01-06 13:05:51
您的操作应该是wp_ajax和wp_ajax_nopriv,而不是admin_ajax。
add_action( 'wp_ajax_new_message', array($this, 'process_upload') );
add_action( 'wp_ajax_nopriv_new_message',array($this, 'process_upload') );https://wordpress.stackexchange.com/questions/355787
复制相似问题