如何在Wordpress环境中使用Ajax将附件发送到服务器端[重复]

Posted

技术标签:

【中文标题】如何在Wordpress环境中使用Ajax将附件发送到服务器端[重复]【英文标题】:How to send attached file to server side with Ajax in Worldpress environment [duplicate] 【发布时间】:2016-11-21 22:40:32 【问题描述】:

我有以下 Ajax 方法,用于将请求的数据(发送邮件)发送到服务器端。我还必须将 2 个附件发送到服务器端。任何人都可以帮助我如何做到这一点?我需要在这个文件中上传,我没有任何其他服务器端 php 脚本,只有同一个文件中的一些函数可以处理数据。这种环境只在 wordlfpress 中,不仅在平面 ajax 中。其他题目没有回答这个问题。

代码片段:

            jQuery('#carrieremailsend').click(function()
                var career_id = jQuery('#carrierid').val();
                var careertittle = jQuery('#carriertittle').val();
                var name = jQuery('#name').val();
                var email = jQuery('#mail').val();
                var message = jQuery('#message').val(); 

                var data = 
                action: 'send_carrier_email',
                career: career_id,
                name: name,
                email: email,
                message: message
                

谁能帮我怎么做? 谢谢!

我正在寻找的答案如下:

var fd = new FormData();
var cv = jQuery(document).find('#cv');
var lm = jQuery(document).find('#lm');

var individual_file = cv[0].files[0];
var lm_file = lm[0].files[0];
fd.append("career",career_id);
fd.append("name",name);
fd.append("email",email);
fd.append("message",message);
fd.append("cv", individual_file);
fd.append("lm", lm_file);
fd.append('action', 'fiu_upload_file');

此代码还将其他数据发布到服务器端。如果您想将这些附加文件存储在您的服务器上,您还必须在服务器端实现以下 PHP 代码(这是 2 个单独的文件):

move_uploaded_file($_FILES["cv"]["tmp_name"],WP_CONTENT_DIR .'/uploads/CV/'.basename($_FILES['cv']['name']));
move_uploaded_file($_FILES["lm"]["tmp_name"],WP_CONTENT_DIR .'/uploads/lm/'.basename($_FILES['lm']['name']));

【问题讨论】:

防止错误和错误功能的最佳方法是使用 formData javascript 对象来获取整个表单(而不是您的 data 对象) 如果我使用 formData 而不是数据对象,服务器端将获得与使用数据对象完全相同的数据吗?如果是,我如何将我的对象转换为 formData 一? 是否可以在同一个ajax方法中拥有一个表单和一个dataForm? 【参考方案1】:

做这样的事情

$(document).ready(function (e) 
    $('#your_form_id').on('submit', (function (e) 
        e.preventDefault();
        $.ajax(
            url: 'send_carrier_email',
            type: 'POST',
            data: new FormData(this),
            contentType: false,
            cache: false,
            processData: false,
            dataType: 'json',
            success: function (data)
                
                if(data.isSuccess)
                  alert("data submitted.");
                

            
        );
    ));
);

在服务器端

print_r($_POST);
print_r($_FILES);
// do your code here 
// .
// .
echo json_encode(array('isSuccess'=>True));
die;

【讨论】:

以上是关于如何在Wordpress环境中使用Ajax将附件发送到服务器端[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将WordPress远程附件存储到腾讯云对象存COS上

wordpress插件中的ajax错误

如何在 Wordpress 中使用 Ajax 将 Javascript 对象传递给 PHP

如何在 ajax 调用中使用 wordpress 函数

Wordpress 使用 Wordpress 将 ajax 值传递到特定页面

使用 AJAX 将 Wordpress 帖子内容加载到 DIV