当我尝试在 WordPress 中上传 Ajax 文件时,admin-ajax 返回状态 400

伊万诺夫

我是 WP 世界的新手。在阅读了大量帖子后,我仍然无法在 WordPress 上进行简单的 Ajax 文件上传。

我正在尝试将姓名、电子邮件和简历存储在数据库中。如果我删除输入文件字段,名称和电子邮件将正确存储到数据库中。

目前,我的表格看起来像这样

<form method="post" id="applicantform" enctype="multipart/form-data">
     <input type="text" name="name" placeholder="Name" />
     <?php wp_nonce_field( 'my_nonce' ); ?>
     <input type="email" name="email" placeholder="Email" />
     <div class="upload">
         <input type="file" id="upload-resume" name="upload-resume" />
     </div>
     <input type="submit" name="submit_form" id="submit_form" value="Send" />
</form>

js部分是

jQuery(document).ready(function($){ 

    $('#submit_form').click(function(e){ 

        var applyformData = document.getElementById("applicantform");
        e.preventDefault(); 

        //ajax call 
        $.ajax({ 
            type: 'POST', 
            url: myajax.ajaxurl, // ajax url you assigned! 
            contentType: false,
            cache: false,
            processData:false,   
            dataType: 'json',
            data: { 
                action: 'applyform',
                formdata: applyformData, 
            }, 

            // Displaying succes message 
            success: function( data ){ 

            }, 

            // Displaying error message 
            error: function( request ){ 
                console.log(request); 
            } 
        }); 
    }); 
});

这是我的功能 function.php

add_action('wp_enqueue_scripts', 'my_ajax_scripts'); 
function my_ajax_scripts(){
    wp_enqueue_script( 'myscript', get_template_directory_uri().'/assets/js/formSubmit.js', array('jquery'), '1.0', true );
    wp_localize_script( 'myscript', 'myajax', array( 'ajaxurl' =>   admin_url( '/admin-ajax.php' ) ) );
}

function applyform(){
    $valid_extensions = array('pdf' , 'doc' , 'ppt'); // valid extensions
    $path = wp_basename( $uploads['baseurl'] ); // upload directory

    if(!empty($_POST['name']) || !empty($_POST['email']) || $_FILES['upload-resume'])
    {
        $resume = $_FILES['upload-resume']['name'];
        $tmp = $_FILES['upload-resume']['tmp_name'];

        $ext = strtolower(pathinfo($resume, PATHINFO_EXTENSION));

        $final_resume = rand(1000,1000000).$resume;

        if(in_array($ext, $valid_extensions)) 
        { 
            $path = $path.strtolower($final_resume); 
            if(move_uploaded_file($tmp,$path)) 
            {
                $table = 'UPC_jobs'; 

                $data = array( 
                    'customer_name' => $formdata_array['name'], 
                    'customer_email' => $formdata_array['email'], 
                    'customer_resume' => $path 
                ); 

                $format = array( 
                    '%s', 
                    '%s', 
                    '%s'
                ); 
                $success=$wpdb->insert( $table, $data, $format ); 
            }
        } 
        else {
            echo 'invalid';
        }
    }    
}

当前错误是Status Code: 400针对 admin-ajax.php。

任何人都可以帮忙

阿努杰帕特尔

请检查您的代码中的以下内容

  1. 您需要在 function.php 文件中添加两个钩子,以便处理登录用户和非登录用户的表单数据。
add_action('wp_ajax_applyform', 'applyform');
add_action('wp_ajax_nopriv_applyform', 'applyform');
  1. 对于ajax文件上传检查链接WP admin ajax文件上传

  2. 添加随机数

在你的 js 部分

data: { 
    action: 'applyform',
    formdata: applyformData, 
    ajax_nonce : myajax.ajax_nonce 
}, 

在您的 function.php 文件中

add_action('wp_enqueue_scripts', 'my_ajax_scripts'); 

function my_ajax_scripts(){
......
wp_localize_script( 'myscript', 'myajax', array( 'ajaxurl' =>   admin_url( '/admin-ajax.php' ), 'ajax_nonce' => wp_create_nonce('security') );
}

function applyform(){
check_ajax_referer( 'security', 'ajax_nonce' );
.......
}

进一步检查 wordpress 文档:WP admin ajax

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Wordpress中上传Ajax文件-无法通过FormData

如何正确设置 jQuery ajax 以在 Wordpress 中上传文件?

Wordpress AJAX 文件上传

无法使用 AJAX 在 codeigniter 中上传文件

无法使用$ ajax()在PHP中上传文件

WordPress AJAX 400

我可以使用jQuery Ajax在IE9中上传文件吗?

php文件未在ajax序列化中上传

从引导模式在 PHP 和 Ajax 中上传文件

使用 javascript 弹出窗口在 PHP 中上传 Ajax 文件

我在用wp_ajax打电话时遇到Wordpress中的400错误请求错误

使用jQuery的WordPress ajax文件上传

wordpress:AJAX:使用 admin-ajax.php 出现 400 个错误请求

IOS返回状态400上的jQuery Ajax调用

使用 jQuery AJAX 在 Laravel 中上传图片

如何在Django中上传AJAX视频

当我尝试在 laravel 5.4 中上传文件时出现以下错误

我正在尝试使用Ajax和Symfony上传文件

尝试仅使用 jquery ajax 在 mvc web api 项目中上传图像

尝试在 cypress 中上传文件时出错

formData在文件上传ajax laravel时返回空对象

Ajax和php文件从输入中上传未定义的索引

使用jQuery Ajax在同一请求中上传文件和JSON数据?

WordPress文件未在主题设置中上传

如何在Wordpress中上传.jar文件?

在WordPress中上传的xml文件的位置

当我尝试使用MS AJAX PageMethods传递对象时,为什么我的参数为null

当我尝试通过Ubuntu软件中心安装Pycharm或Atom时,出现错误:捕捉到返回的状态码400:错误的请求

当我从Wordpress发送AJAX联系表格时,电子邮件数据为空