Thursday, January 30, 2020

Convert a JavaScript Object to FormData Object

/* takes a {} object and returns a FormData object */
function objectToFormData(obj, form, namespace) {
    var fd = form || new FormData();
    var form_key;
    for (var property in obj) {
        if (obj.hasOwnProperty(property) && property != '$$hashKey') {
            if (namespace) {
                form_key = namespace + '[' + property + ']';
            } else {
                form_key = property;
            }
            /*if the property is an object, but not a File,*/
            /*use recursivity.*/
            if (obj[property] instanceof Date) {
                fd.append(form_key, obj[property].toISOString());
            } else if (typeof obj[property] === 'object' && !(obj[property] instanceof File)) {
                objectToFormData(obj[property], fd, form_key);
            } else {
                /*if it's a string or a File object*/
                if (!empty(obj[property])) {
                    fd.append(form_key, obj[property]);
                }
            }
        }
    }
    return fd;
}

No comments:

Post a Comment