使用Ajax PHP上传一个表单中的数据和文件?

时间:2015-03-10 05:18:14

标签: javascript php jquery ajax

我正在使用jQuery和Ajax为我的表单提交数据和文件,但我不确定如何以一种形式发送数据和文件?

<form id="data" method="post" enctype="multipart/form-data">
<input type="text" name="first" value="Bob" />
<input type="text" name="middle" value="James" />
<input type="text" name="last" value="Smith" />
<input name="image" type="file" />
<button>Submit</button>
</form>

我打算使用FormData,如下所示

var formData = new FormData($(this)[0]);

但是发现它在IE&lt; 10中不起作用而且不被接受。还有其他方法吗?

3 个答案:

答案 0 :(得分:1)

此块应该适合您。

$.ajax({
        url: 'url',
        type: 'POST',
        async: true,
        dataType: "json",
        data: $('#data').serializeArray(),
        error: function (a, b, c) { onError(a, b, c, parameters); },
        success: function (data) { onSuccess(data, parameters); }
    });

答案 1 :(得分:0)

function savedata(){

var vacancy_desc = CKEDITOR.instances['vacancy_desc'].getData();
   var file_data = $('#fileupload').prop('files')[0];  
   var form_data = new FormData();                  
   form_data.append('file', file_data);
   form_data.append('vacancy_records',vacancy_records);
   form_data.append('vacancy_desc',vacancy_desc);
$.ajax({
        url:pathname,
        method:"POST",
        dataType: 'text', // what to expect back from the PHP script
        cache: false,
        contentType: false,
        processData: false,
        data:form_data,
        cache:false,
        success:function(datas){

                  alert('Updated successfully !');
                  return false;
            }
      });
}

答案 2 :(得分:0)

你可以在php中这样做,而不是使用表单数据,

序列化表单数据并通过ajax发送,例如

    $.ajax({
        type: 'post',
        url: 'post.php',
        data: $('#form').serialize(),
        success: function () {
        }
      });

    });

使用$('#form').serialize(),您可以将所有表单数据发送到php。

我希望它有所帮助,