![](/img/trans.png)
[英]formdata in an ajax request returns Uncaught TypeError: Illegal invocation error
[英]Illegal invocation error (if processData not set and can not find action handler if set) on ajax request in wordpress
抱歉标题不好。 我不明白为什么我得到一个Uncaught TypeError: Illegal invocation
在wordpress中我的AJAX请求上的Uncaught TypeError: Illegal invocation
错误。
此代码有效 :
JS
function updateDB(){
$.ajax({
url: '/wp-admin/admin-ajax.php',
type: 'POST',
data: {
action: 'det_lilla_exta
},
});
}
PHP(服务器脚本)
<?php
add_action('wp_ajax_det_lilla_extra', 'det_lilla_extra');
add_action( 'wp_ajax_nopriv_det_lilla_extra', 'det_lilla_extra' );
function det_lilla_extra(){
echo "hi";
}
但如果我改变我的js(以后能够通过fromdata对象发送图像)
JS
function updateDB(){
var formData = new FormData();
formData.append('action', 'det-lilla-extra');
$.ajax({
url: '/wp-admin/admin-ajax.php',
type: 'POST',
data: formData,
});
}
然后我得到Uncaught TypeError: Illegal invocation
错误。 我做了一些googleing并发现为了防止您的数据转换为字符串,您应该将processData
参数设置为false。 就像在这里完成:
function updateDB(){
var formData = new FormData();
formData.append('action', 'det-lilla-extra');
$.ajax({
url: '/wp-admin/admin-ajax.php',
type: 'POST',
data: formData,
processData: false
});
}
但是现在我只从我的wordpress php脚本中收到0
,这意味着它无法找到我的action
处理程序。
所以我不知道该怎么做。 或者真正的错误。 有任何想法吗?
(我可能在这里有一些轻微的语法错误,因为我没有复制粘贴我的代码,但我的原始代码中没有任何语法相关的错误)。
问题是我没有暗示enctype: 'multipart/form-data',
//update database with posted values
function updateDB(){
var fd = new FormData();
fd.append('action', 'det_lilla_extra');
fd.append('image', $('#fileInput').prop('files')[0]);
$.ajax({
url: '/wp-admin/admin-ajax.php',
type: 'POST',
data: fd,
enctype: 'multipart/form-data',
contentType:false,
processData:false,
});
};
这应该是通过wordpress中的ajax请求发送图像的有效解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.