在WordPress中使用jQuery通过AJAX发布表单时,表单数据为空

时间:2017-07-19 作者:Vipin

我在中使用jquery通过ajax发送表单WordPress 但不幸的是我的表格空了console.

这是我的jquery代码-

function step1SaveData(){
    var formData = new FormData(jQuery(\'#tpform1\')[1]);
    console.log(formData);
    jQuery.ajax({
        type:"POST",
        url:\'http://lexem.in/wp-admin/admin-ajax.php\',
        processData:false,
        contentType:false,
        data:{
            action:\'tpartners\',
            formdata:formData,
        },
        success:function(data){
            var insertedID = data.trim();
            if(insertedID!=\'fail\'){
            }else{
                console.log(\'fail\');
            }
        }

    });

}
这是我的ajax文件代码-

add_action( \'wp_ajax_tpartners\', \'save_update_data\' );
add_action( \'wp_ajax_nopriv_tpartners\', \'save_update_data\' );

function save_update_data(){

    print_r($_POST);
    print_r($_FILES);

} 
Ajax文件返回0。

所以请帮我弄清楚。

提前谢谢。

1 个回复
最合适的回答,由SO网友:mrben522 整理而成

尝试使用.serialize() 而不是FormData

 function step1SaveData(){
    var formData = jQuery(\'#tpform1\').serialize();
    console.log(formData);
    jQuery.ajax({
        type:"POST",
        url:\'http://lexem.in/wp-admin/admin-ajax.php\',
        data:{
            action:\'tpartners\',
            formdata:formData,
        },
        success:function(data){
            var insertedID = data.trim();
            if(insertedID!=\'fail\'){
            }else{
                console.log(\'fail\');
            }
        }

    });

}
或使用.serializeArray() 如果希望数据位于数组而不是字符串中。

编辑-从注释中删除processData:falsecontentType:false 来自ajax调用

结束

相关推荐

使用AJAX手动登录用户安全吗?

我正在为我的主题添加一个模式登录。最直接的途径是创建模板并包括wp_login_form(); 在里面。这将加载稍后可以使用CSS或jQuery自定义的核心登录。但是,它需要重新加载页面以验证凭据。我的想法是使用AJAX请求发送用户名和哈希密码,并通过wp_singon().现在我的问题是:这样做安全吗?WordPress本身会以某种方式将密码发送到服务器,但我不确定这就是它</如果可以这样做,我应该使用admin-ajax? 或者REST-API也可以处理登录吗</如果以上都可以,那么最后一