ajax formdata:非法调用

问题描述 投票:0回答:4

我尝试制作用于 Symfony 2 上传的 ajax 脚本。Chrome 返回此错误:

未捕获的类型错误:非法调用 jquery.min.js:4

我认为这是由于

FormData
对象未正确构造(我尝试使用
.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; //
        }); 
    }
  });
});
ajax file
4个回答
289
投票

jQuery 尝试将您的 FormData 对象转换为字符串,将其添加到您的 $.ajax 调用中:

processData: false,
contentType: false

4
投票

当 jquery 内部未正确序列化数据时,有时会发生这种情况,要修复它,请添加此内容。

cache : false,
dataType    : 'json',
processData : false,

3
投票

我只需添加以下内容就解决了这个问题:

contentType: false,
processData: false,
cache: false,

0
投票

表单也可以自动转换为对象后发送。

$("#form").submit( function (e) {
  
   e.preventDefault(); //prevent sending via browser, navigating or refreshing.  
   let formData = new FormData(this);      
   let formObj = Object.fromEntries(formData);
      
   $.ajax(uri, {
     type: "post",    
     data: formObj
      });
}
© www.soinside.com 2019 - 2024. All rights reserved.