Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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 表单提交文件和复杂的Json_Javascript_Jquery_Json_Extjs - Fatal编程技术网

Javascript 表单提交文件和复杂的Json

Javascript 表单提交文件和复杂的Json,javascript,jquery,json,extjs,Javascript,Jquery,Json,Extjs,如何随文件上传一起提交复杂的Json对象 我可以成功地创建一个简单的json对象,但在创建复杂的json时失败: e、 g.[file]+{simple:object}——好的 e、 g.[file]+{some:{complex:'asdf'},对象:['str1','str2']}失败 当params是一个具有多个层的复杂Json对象时,上述代码将失败。我使用的是ExtJs,对于那些使用JQuery的人来说,我猜这是html表单,所以我的问题在不同的js库中都是一样的。在上传文件时,Ext会

如何随文件上传一起提交复杂的Json对象

我可以成功地创建一个简单的json对象,但在创建复杂的json时失败:

e、 g.[file]+{simple:object}——好的

e、 g.[file]+{some:{complex:'asdf'},对象:['str1','str2']}失败


当params是一个具有多个层的复杂Json对象时,上述代码将失败。我使用的是ExtJs,对于那些使用JQuery的人来说,我猜这是html表单,所以我的问题在不同的js库中都是一样的。

在上传文件时,Ext会将表单发布到隐藏的iframe,所以你需要解析数据。

对于每个参数,它会将值粘贴到隐藏的输入中并发布值。归根结底,你需要以表单帖子的形式来阅读,而不是JSON blob。谢谢,这并不是我所期望的,但我已经完成了这项工作,这并不完美。我需要注意url的最大大小:“Url编码/解码-这些方法可用于将JSON数据转换为可作为GET字符串一部分传输的格式,反之亦然”
    //here is the simple json data
    var params = {simple: 'jsonData'};

    //here is the header to enable json stuff
    var headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/json, text/javascript, */*',
        'dataType': 'json'
    };

    //assume we have some files in that html form
    var files = fi.button.fileInputEl.dom.files;

    form.submit({
        url: '/some/api',
        waitMsg: 'Uploading your file...',
        headers: headers,
        params: params,
        success: function(a, b) {
            //done...
        }
    });