Ajax $ _POST& $ _FILES没有获取数据

时间:2017-06-23 12:22:00

标签: php jquery ajax

我正在开设类似YouTube的网站,但我的公司。我想做的是让用户自己上传照片和视频(而不是每次都问我)。

我遇到了视频上传部分的问题,我使用相同的技术进行照片上传,效果很好!

这是我的代码:

$(function () {
  $('#my_form').on('submit', function (e) {

    e.preventDefault();

    var $form = $(this);
    var formdata = (window.FormData) ? new FormData($form[0]) : null;
    var data = (formdata !== null) ? formdata : $form.serialize();
    $.ajax({
          url: 'MgtImportVideo.php',
          type: 'POST',
          contentType: false,
          processData: false,
          dataType: 'html',
          data: data, //data = serialized form
          xhr: function(){      
               //do stuff like showing percentage progress
          },
          beforeSend : function (){
               //do some stuff like incrementing variables
          },
          success: function (response) {
               //do other stuff like diplaying error/sucess messages
          }
     });
});

我将contentTypeprocessData设为false,因为我听说上传是必需的。

实际的视频文件存储方式如下:

$('#my_form').find('input[name="fileVideo[]"]').on('change', function (e) {
        var files = $(this)[0].files;
        var urivideo=false;

        urivideo=window.URL.createObjectURL(files[0]);

        //Then do some other stuff (I guess not really important here)
});

然后在我的MgtImportVideo.php文件中,$ _POST和$ _FILES没有获取任何数据并显示为空数组。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

要使用ajax上传文件,请使用formData代替serialized form数据serialize encode a set of form elements as a string for submission。要上传文件,您必须制作一个formData对象并将文件附加到该文件中并提交该formData对象。

例如:

var file_data = $('#pic').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);

$.ajax({
    url         : 'upload.php',     // point to server-side PHP script 
    dataType    : 'text',           // what to expect back from the PHP script, if anything
    cache       : false,
    contentType : false,
    processData : false,
    data        : form_data,                         
    type        : 'post',
    success     : function(output){
        alert(output);              // display response from the PHP script, if any
    }
});

答案 1 :(得分:0)

添加成功,如果数据返回true,那么您可以在成功函数中执行任何操作

var data_ser = (formdata !== null) ? formdata : $form.serialize();
$.ajax({
      url: 'MgtImportVideo.php',
      type: 'POST',
      contentType: false,
      processData: false,
      dataType: 'html',
      data: data_ser, //data = serialized form
      success: function(return_data){  //data return in ajax call.      
           if(return_data){
                 alert('success');     //if data returns true 
           }
      }

 });