如何在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 中使用 Ajax 将 Javascript 对象传递给 PHP