嗨,我有一个wordpress php类,可以接收我的ajax,效果很好。
现在,我必须在用于将参数传递给PHP类的同一POST请求中上传文件(我在该类中具有一个开关,该开关根据POST数据中的参数将我发送到适当的函数)。
这是代码:
$(document).ready(function (e) {
$('#imageUploadForm').on('submit',(function(e) {
e.preventDefault();
var formData = new FormData(this);
var userID = <?php echo get_current_user_id(); ?>;
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
var data = {
'action': 'romme_call',
'whatever': 1234,
'userID': userID,
'function_call': 'upload_profile_photo',
**'form_data' : formData**
};
console.log(data);
jQuery.post(ajaxurl, data, function(response) {
console.log("done");
console.log(data);
});
该代码当然会返回“Uncaught TypeError:非法调用”
因为它不接受formData作为数据中的参数。
我该如何处理?
最佳答案
它返回Illegal invocation
,因为jQuery尝试使用$.param
解析表单数据。
使用jQuery的ajax提交文件时,必须关闭
$('#imageUploadForm').on('submit', (function (e) {
e.preventDefault();
var formData = new FormData(this);
var userID = <? php echo get_current_user_id(); ?> ;
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
formData.append('action', 'romme_call');
formData.append('whatever', '1234');
formData.append('userID', userID);
formData.append('function_call', 'upload_profile_photo');
$.ajax({
url : ajaxurl,
type : 'POST',
data : formData,
contentType: false,
processData: false
}).done(function(response) {
console.log("done");
console.log(data);
});
});