文件未使用ajax上传到服务器

时间:2014-03-15 14:33:57

标签: php jquery ajax file-upload

这是我的表格来源:

<form id="createProject" name="createProject" class="form-light" method="post" enctype="multipart/form-data" target="upload_target">
    <div  class="col-md-10" id="sandbox-container1">
    <label>Project duration</label>
    <div class="input-daterange input-group" id="datepicker">
    <input type="text" required class="input-md form-control" id="start" name="start" />
    <span class="input-group-addon">to</span>
    <input type="text" required class="input-md form-control" id="end" name="end" />
    </div>
    </div>
    <div class="col-md-10">
    <div class="form-group">
    <label>Project attachment's</label>
    <input type="file" class="form-control" id="projectFile" name="projectFile" placeholder="Select project  attachment's">
    </div>
    </div>
    <input type="hidden" id="ownerid" name="ownerid" value="<?php echo $userid; ?>">
    <div class="col-md-10">
    <div class="form-group">
    <button class="btn btn-two pull-right btn-lg" form="createProject" type="submit">Submit</button>
    </div>
    </div>
</form>

文件未上传到服务器 我使用ajax函数提交。

$.ajax({
    url:'ajaxcalls/createprojectfunction.php',
    data:$(this).serialize(),
    type:'POST',
    beforeSubmit:  function()
    {
        /* Before submit */
        for ( instance in CKEDITOR.instances )
        {
            CKEDITOR.instances[instance].updateElement();
        }
    },
    success:function(data){
        console.log(data);
    },
        error:function(data){
    }
});

Firebug控制台发生此错误。
注意:未定义的索引:projectFile。
但是所有其他输入元素都可以在ajax URL php文件中访问。

1 个答案:

答案 0 :(得分:1)

您必须使用FormData对象通过ajax上传文件,

$.ajax({
  url:'ajaxcalls/createprojectfunction.php',
  data: new FormData(this),
  type:'POST',
  processData: false,
  contentType: false,
  beforeSubmit:  function()
  {
        /* Before submit */
    for ( instance in CKEDITOR.instances )
    {
        CKEDITOR.instances[instance].updateElement();
    }
    },
  success:function(data){
  console.log(data);
  },
  error:function(data){
  }
});