Shahab
Shahab

Reputation: 694

file not uploaded to the server with ajax

This is my form source:

<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>

File is not uploading to the server.
I use ajax function to submit.

$.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 console this error occur.
Notice: Undefined index: projectFile.
but all other input element are accessable in ajax URL php file.

Upvotes: 1

Views: 116

Answers (1)

Musa
Musa

Reputation: 97672

You'll have to use a FormData object to upload a file via 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){
  }
});

Upvotes: 1

Related Questions