ajax formdata : 非法的调用

13 浏览
0 Comments

ajax formdata : 非法的调用

我试图为Symfony 2创建一个用于上传的ajax脚本。Chrome返回以下错误:

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

我认为这是由于FormData对象没有正确构造(我尝试使用.serialized()的脚本:

$(document).ready(function() {
  $('#formImage').submit(function(event) {
    event.preventDefault();
    // 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初始化完成...');  
    }
    else{
        console.log('不支持formdata');
    }
    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'), // 表单中指定的文件名
            type: $(this).attr('method'), // 表单中指定的方法(get或post)
            cache: false,
            //data : $(this).serialize(),
            data: formdata ,
            success: function(data) { // 获取PHP文件的响应
                $('#myModal').html(data);
                console.log('ok');
            }        
            //return false; //
        }); 
    }
  });
});

0
0 Comments

在使用Ajax发送FormData时,有时会遇到"ajax formdata : Illegal invocation"的问题。这个问题的出现是由于一些原因造成的,下面将详细介绍问题的原因以及解决方法。

问题的原因是在使用Ajax发送FormData时,必须设置一些参数来确保数据能够正确地传输。缺少这些参数会导致"ajax formdata : Illegal invocation"错误的出现。

解决这个问题的方法是添加以下参数:

contentType: false,

processData: false,

cache: false,

这些参数的作用是:

- contentType: false表示不设置Content-Type头部,让浏览器自动设置合适的值。

- processData: false表示不对数据进行处理,让浏览器自动处理FormData对象。

- cache: false表示不缓存请求结果。

通过添加这些参数,可以解决"ajax formdata : Illegal invocation"的问题,确保数据能够正确地传输。

下面是一个示例代码,演示如何使用这些参数来解决问题:

var formData = new FormData();
formData.append('file', file);
$.ajax({
    url: 'upload.php',
    type: 'POST',
    data: formData,
    contentType: false,
    processData: false,
    cache: false,
    success: function(response) {
        console.log('File uploaded successfully');
    },
    error: function(xhr, status, error) {
        console.log('An error occurred while uploading the file');
    }
});

在这个示例中,我们创建了一个FormData对象,并将文件添加到其中。然后使用Ajax发送FormData,并设置了contentType、processData和cache参数来解决问题。

通过以上的解决方法,我们可以成功地解决"ajax formdata : Illegal invocation"的问题,确保数据能够正确地传输。希望这篇文章对你有帮助!

0
0 Comments

问题:ajax formdata : Illegal invocation 出现的原因以及解决方法

问题描述:

在使用ajax提交表单数据时,有时会出现"ajax formdata : Illegal invocation"的错误。这个错误通常是由于jquery在内部序列化数据时出现问题导致的。

解决方法:

为了解决这个问题,可以添加以下代码:

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

这些代码会告诉jquery在处理表单数据时禁用缓存、将返回的数据类型设置为json,并且不对数据进行处理。这样可以确保在通过ajax提交表单数据时不会出现"ajax formdata : Illegal invocation"错误。

至此,我们已经了解了"ajax formdata : Illegal invocation"错误的原因以及解决方法。

0
0 Comments

问题的出现原因是jQuery尝试将FormData对象转换为一个字符串,但是转换过程中出现了非法调用的情况。解决方法是在$.ajax调用中添加以下代码:

processData: false,
contentType: false

点击这里查看完整的工作示例:http://stackoverflow.com/a/10899796/957950

这个方法非常好,完全奇妙。真是令人惊讶的是,一些小的配置缺失可能会破坏你的工作。非常感谢啊兄弟。

哎呀!这浪费了我好几个小时。

这就像当你在YouTube上看2012年的视频时,人们仍然在挖掘它一样。为了找到这个问题,浪费了好几个小时。

0