Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery ajax()时FormData为空_Javascript_Jquery_Ajax_File Upload - Fatal编程技术网

Javascript 使用jQuery ajax()时FormData为空

Javascript 使用jQuery ajax()时FormData为空,javascript,jquery,ajax,file-upload,Javascript,Jquery,Ajax,File Upload,我尝试使用jQuery.ajax文件提交表单。谷歌说我应该使用FormData,它会自动将文件和所有输入编码到一个我可以通过XHR发送的对象中 嗯,FormData对象是空的。它在调试器和服务器端都是空的。我找不到错误。这是代码。浏览器是Firefox27 图片: $(文档).ready(函数(){ $(“#生成参数”).submit(函数(e){ var数据=新的FormData(本); $.ajax({ 数据:数据, 方法:“张贴”, 成功:函数(url){ 警报(“正常”); },

我尝试使用
jQuery.ajax
文件提交表单。谷歌说我应该使用
FormData
,它会自动将文件和所有输入编码到一个我可以通过XHR发送的对象中

嗯,
FormData
对象是空的。它在调试器和服务器端都是空的。我找不到错误。这是代码。浏览器是Firefox27



图片:

$(文档).ready(函数(){ $(“#生成参数”).submit(函数(e){ var数据=新的FormData(本); $.ajax({ 数据:数据, 方法:“张贴”, 成功:函数(url){ 警报(“正常”); }, cache:false, contentType:false, processData:false }); e、 预防默认值(); 返回false; }); });
参数
部分的
网络
选项卡上的Firebug中,我看到一行:

[对象表单数据]:“未定义”
?真的吗

愚蠢的事情是我甚至不能发送从头创建的
FormData
对象。像这样

var data=new FormData();
data.append(“test”,{value:0});//还空着

以下是我的做法:

  • 打开和关闭
    表单
    标签应包装所有输入文件
  • e.preventDefault()应该在函数的开头,更好的练习
  • JS:

    $("#generate_params").submit(function(e) {
        e.preventDefault();
    
        if( window.FormData !== undefined ) 
             //make sure that we can use FormData ie>9, chrome > 7, opera > 12 safari >5, android > 3  gecko mobile > 2, opera mobile >12 <- wil support XHR too
        {
    
            var formData = new FormData(this);
            // you can append aditional values:
            //  formData.append("be",logmebehave);
            $.ajax({
                url: 'filesend.php',  //Path to the server script that process the data
                type: 'POST',
                data: formData,
                xhr: function() {  },
                success: function(response){},
                //Options to tell jQuery not to process data or worry about content-type.
                cache: false,
                contentType: false,
                processData: false
             });
        } else {
    
           //Fallback
    
        }
    
        return false;
    });
    
    $(“#生成参数”).submit(函数(e){
    e、 预防默认值();
    if(window.FormData!==未定义)
    
    //确保我们可以使用FormData ie>9、chrome>7、opera>12 safari>5、android>3 gecko mobile>2、opera mobile>12事实证明,我使用的是jQuery 1.8.1,它不支持
    FormData
    。库更新解决了这个问题。

    与Django后端的问题完全相同。 通过将name属性添加到表单中的所有输入中解决了这个问题,因为它们用于在dict/hashmap结构中处理表单数据


    有一个好的。

    而不是
    var-formData=new-formData($(“#generate_-params”)[0]);
    您可以编写
    var-formData=new-formData(this);
    而不是。'this'是提交处理程序中的实际表单。记录新的formData会给我一个空对象,即使$('.#generate_-params')[0]给我看表单对象。有什么想法吗?我在jquery2.2.4.min.js中遇到了问题