2016-04-21 7 views
1
$('#add-article').submit(function() { 
    var formData = new FormData($(this)); 
    $.ajax({ 
     type: 'post', 
     url: '/add-article', 
     dataType: 'json', 
     data: formData, 
     //processData: false, 
     //contentType: false, 
     error: function(data) { 
      var errors = data.responseJSON; 
      $.each(errors, function(k, v) { 
       $('#' + k).addClass('has-error').append('<span class="help-block"><strong>' + v[0] + '</strong></span>'); 
      }); 
     }, 
     success: function(data) { 
      window.location.replace(data.url); 
     } 
    }); 

    return false; 
}); 

Когда я закомментировать porcessData: false, форма же получить представлены, но через стандартную форму Представлять не Ajax, и дал мне ошибку Uncaught TypeError: Illegal invocationОтправить форму с файлами с помощью Ajax

Если добавить эти две строки в, ajax представит пустую форму.

Моя форма:

<form role="form" method="POST" action="{{ route('post_add_article') }}" id="add-article" enctype="multipart/form-data"> 

         <input type="text" class="form-control" name="title"> 
         <textarea class="form-control" rows="16" name="body"></textarea> 

         <input type="file" name="files[]" multiple> 

        <button type="submit" class="btn btn-primary pull-right">Submit</button> 
      </form> 

ответ

0

кажется решена путем замены var formData = new FormData($(this)); с var formData = new FormData($(this)[0]);