Tom
Tom

Reputation: 16276

Form submit File and complex Json

How do I submit complex Json object along with a file upload?

I can do a simple json object successfully, only fails with a complex json:

e.g. [file] + { simple: object } -- okay

e.g. [file] + {some: {complex: 'asdf'}, object:['str1','str2']} -- fails

    //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...
        }
    });

The code above fails when params is a complex Json object with more than one layer. I am using ExtJs, for those who uses JQuery I guess it is html form so my question would be the same across different js libs.

Upvotes: 0

Views: 106

Answers (1)

Evan Trimboli
Evan Trimboli

Reputation: 30092

When doing file uploading, Ext does a form post to a hidden iframe, so you need to parse the data as such.

Upvotes: 1

Related Questions