Search code examples
javascriptjqueryinternet-explorer-8internet-explorer-9jquery-file-upload

jQuery File Upload response does not contain jqXHR.responseText property in IE < 10


I'm getting some trouble with ie8/ie9 while trying to get response Html from server.

$(function() {
    $('#fileupload').fileupload({
        url: '@Url.Action("Save", "CounterDoc")',
        dataType: 'json',
        formData: window.globalParams, 
        fail: function (e, data) { // case when server returns NOT JSON - is fail.                 
            var responseObj = {};
            responseObj.responseText = data.response().jqXHR.responseText;
        }
    });
});

Here data.response().jqXHR.responseText is always undefined in old Ies. What am I doing wrong? Can i get response body in old browsers?


Solution

  • Found an answer in FAQ:

    As ie<10 version uses iframe to send-receive data instead of xhr response body is not accessible in usual way. So for ie I have to override converters to throw error if server responded with invalid data type.

    $.ajaxSetup({
            converters: {
                'iframe json': function (iframe) {
    
                    var result = {};
                    result.responseText = iframe && $(iframe[0].body)[0].innerHTML;
    
                    if (!IsJsonString(result.responseText)) { // answer IS NOT JSON, html contains error data
    
                        throw result;
                    }
                    else { // server sent valid JSON - OK
                        return $.parseJSON(result);    
                    }
                }
            }
        });