Jquery Ajax Json到PHP表单附件未通过?
在花了两天的时间试图解决这个问题后,我终于决定加入这个社区,作为最后的手段,寻求一些严肃的援助 基本上,我有一个表单,应该在发送电子邮件的同时附上用户上传的附件(比如简历/C.V)。我使用Jquery在客户端进行验证,使用Ajax/Json将表单发送到我的PHP邮件文件,并在不刷新的情况下返回响应等 每件事的电子邮件部分都工作得很好,但不知何故,附件没有送到我的手中。Jquery Ajax Json到PHP表单附件未通过?,php,ajax,json,jquery,Php,Ajax,Json,Jquery,在花了两天的时间试图解决这个问题后,我终于决定加入这个社区,作为最后的手段,寻求一些严肃的援助 基本上,我有一个表单,应该在发送电子邮件的同时附上用户上传的附件(比如简历/C.V)。我使用Jquery在客户端进行验证,使用Ajax/Json将表单发送到我的PHP邮件文件,并在不刷新的情况下返回响应等 每件事的电子邮件部分都工作得很好,但不知何故,附件没有送到我的手中。 这是我下面的Jquery代码,我祈祷有人会知道这个noob把事情搞砸了 $('#jobsubmit').click(fu
这是我下面的Jquery代码,我祈祷有人会知道这个noob把事情搞砸了
$('#jobsubmit').click(function(e){
e.preventDefault();
var valid = '';
var required = 'is required';
var fileUpload = $('form#jobform #cv_upload').val().split('.').pop().toLowerCase();
var allow = new Array('jpg','wps','odf','txt','rtf','doc','docx','pdf');
var jobtitle = $('form#jobform #job_title').val();
var name = $('form#jobform #job_name').val();
var email = $('form#jobform #job_email').val();
var contactnumber = $('form#jobform #job_number').val();
var portfolio = $('form#jobform #job_portfolio').val();
var honeypot = $('form#jobform #honeypot').val();
var humancheck = $('form#jobform #humancheck').val();
if(name = '' || name.length <= 2) {
valid = '<p class= \"errortext_jobs\">Your name ' + required + '</p>';
}
if(jQuery.inArray(fileUpload, allow) == -1) {
valid += '<p class= \"errortext_jobs\">Please select a valid C.V file type to upload.</p>';
}
if(!email.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
valid += '<p class=\"errortext_jobs\">Your email ' + required + '</p>';
}
if(!contactnumber.match(/^([0-9]+)$/)) {
valid += '<p class=\"errortext_jobs\">Your number ' + required + '</p>';
}
if(honeypot != 'http://') {
valid += '<p class=\"errortext_jobs\">Spambots are not allowed</p>';
}
if(humancheck != '') {
valid += '<p class= \"errortext_jobs\">A Human user ' + required + '</p>';
}
if (valid != '') {
$('#job_response').removeClass()
.addClass('error')
.html('<p class= \"errortitle\"> Please correct the errors below </p>' +
valid)
.fadeIn('fast');
} else {
$('#job_response').removeClass()
.addClass('form_processing')
.html('<p class= \"processtitle\">Processing...</p>')
.fadeIn('fast');
var formData = $('form#jobform').serialize();
submitForm(formData);
}
});
});
function submitForm(formData) {
$.ajax({
type:'POST',
url:'jobengine.php5',
data: formData,
dataType: 'json',
timeout: 7000,
success: function(data) {
$('#job_response').removeClass()
.addClass((data.error === true) ? 'error' : 'success')
.html(data.msg).fadeIn('fast');
if ($('#job_response').hasClass('success')) {
setTimeout("$('#job_response').fadeOut('slow')", 5000);
}
},
error: function(XMLHttpRequest, textStatus, errorThrown){
$('#job_response')
.removeClass().addClass('error')
.html('<p class= \"errortext_jobs\">There was an ' + errorThrown + '</p>'
+ '<p class= \"errortext_jobs\"> error due to an '
+ textStatus + '</p>'
+ '<p class= \"errortext_jobs\"> condition. </p>').fadeIn('fast');
},
complete: function(XMLHttpRequest, status){
$('form#jobform')[0].reset();
}
});
$(“#作业提交”)。单击(函数(e){
e、 预防默认值();
var有效=“”;
var required='是必需的';
var fileUpload=$('form#jobform#cv#upload').val().split('.').pop().toLowerCase();
var allow=new数组('jpg','wps','odf','txt','rtf','doc','docx','pdf');
var jobtitle=$('form#jobform#job#u title').val();
var name=$('form#jobform#job#u name').val();
var email=$('form#jobform#job#u email').val();
var contactnumber=$('form#jobform#job#u number').val();
var组合=$('form#jobform#JobU组合').val();
var honeypot=$('form#jobform#honeypot').val();
var humancheck=$('form#jobform#humancheck').val();
如果(name=“”| | name.length$.ajax
不支持文件上传,简单明了
这是因为您不能用XHR进行文件上传,因为JavaScript无法读取文件数据
您需要将表单提交到隐藏的iframe或使用Flash/Java/etc进行文件上载。首先使用$('form#jobform')。提交(函数(e){
不是单击()
请参见此处:不要使用单击,请使用提交
jQuery("#Form").submit(function() {
var url = "application.php";
jQuery.ajax({
type: "POST",
url: url,
data: new FormData(this),
cache: false,
contentType: false,
processData: false,
success: function(data){
alert(data);
}
});
event.preventDefault();
});
html是什么样子的?嗨Neal,我会帮你贴出来的。谢谢。为了避免你的头发拉扯得太多,你有没有尝试过使用firebug或Chrome嵌入的javascript工具看看哪里出了问题?我附上了上面的html,希望它能在某种形状或形式上有所帮助。Raveline,谢谢你的评论。我尝试过firebug,但没有什么乐趣。T表单真的很好,如果在这个问题上恢复到一个页面刷新的表单,那将是一个耻辱。+1
我甚至没有想到这一点。嗨,昆汀,非常感谢您的回复(您也是Neal,谢谢).所以基本上iFrame会在页面内部刷新,从而产生整个页面没有刷新的错觉?有一个使用ajax的示例,我不知道它是否正常工作。
jQuery("#Form").submit(function() {
var url = "application.php";
jQuery.ajax({
type: "POST",
url: url,
data: new FormData(this),
cache: false,
contentType: false,
processData: false,
success: function(data){
alert(data);
}
});
event.preventDefault();
});