2013-05-11 31 views
21

Tôi cố gắng để làm cho kịch bản ajax để tải lên cho Symfony 2. Chrome trả về lỗi này:ajax formdata: gọi trái phép

Uncaught TypeError: Illegal invocation jquery.min.js:4

Tôi nghĩ rằng đó là do các đối tượng FormData không được xây dựng một cách chính xác (tôi cố gắng kịch bản với .serialized() :

$(document).ready(function() { 
    $('#formImage').submit(function(event) { 
    event.preventDefault(); 
    // appel Ajax 
    alert("ajax"); 

    var input = document.getElementById("rasta_blogbundle_imagetype_file"); 
    console.log(input); 
    var formdata = false; 

    if (window.FormData) { 
     formdata = new FormData(); 
     console.log('formdata initialized ...'); 
    } 
    else{ 
     console.log('formdata not supported'); 
    } 

    formdata.append('name',$('#rasta_blogbundle_imagetype_name').val()); 
    console.log(formdata); 
    formdata.append('file',input); 
    formdata.append('_token',$('#rasta_blogbundle_imagetype__token').val()); 
    console.log(formdata);  
    //alert(DATA); 

    if (formdata){ 
     $.ajax({ 
      url: $(this).attr('action'), // le nom du fichier indiqué dans le formulaire 
      type: $(this).attr('method'), // la méthode indiquée dans le formulaire (get ou post) 
      cache: false, 
      //data : $(this).serialize(), 
      data: formdata , 
      success: function(data) { // je récupère la réponse du fichier PHP 
       $('#myModal').html(data); 
       console.log('ok'); 
      }   
      //return false; // 
     }); 
    } 
    }); 
}); 

Trả lời

60

jQuery cố gắng để chuyển đổi đối tượng FormData của bạn thành một chuỗi, thêm video này vào cuộc gọi $ .ajax của bạn:

processData: false, 
contentType: false 
+2

Điều này hoàn toàn nên là câu trả lời được chấp nhận. – Joseph

+0

Xem đầy đủ, ví dụ làm việc tại đây: [http://stackoverflow.com/a/10899796/957950](http://stackoverflow.com/a/10899796/957950) – brichins

+2

Không giải quyết được vấn đề của tôi. –

0

nó xảy ra đôi khi jquery nội bộ không serialize dữ liệu một cách chính xác dữ liệu để sửa chữa nó thêm này.

cache : false, 
dataType : 'json', 
processData : false, 
Các vấn đề liên quan