Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Ajax Json到PHP表单附件未通过?_Php_Ajax_Json_Jquery - Fatal编程技术网

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

在花了两天的时间试图解决这个问题后,我终于决定加入这个社区,作为最后的手段,寻求一些严肃的援助

基本上,我有一个表单,应该在发送电子邮件的同时附上用户上传的附件(比如简历/C.V)。我使用Jquery在客户端进行验证,使用Ajax/Json将表单发送到我的PHP邮件文件,并在不刷新的情况下返回响应等

每件事的电子邮件部分都工作得很好,但不知何故,附件没有送到我的手中。
这是我下面的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();
});