繁体   English   中英

在wordpress中的ajax请求上出现非法调用错误(如果未设置processData且无法找到操作处理程序)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM