IE7 JSON Response: Object Expected.. Works in Chrome and FireFox

970 views Asked by At

This is the last thing I have to do before I can send my beloved webapp into the wild, but of course IE7 is being difficult with me!!

I am using the JQuery Form plugin to upload data to my server. A servlet class will then run some operations with the file and shoot back some JSON to the client. As always, Chrome and Firefox handle the response like champs and give me the output I expect.

Internet Explorer 7 does not. I get an "Object Expected" error.... I have narrowed down my problem to a single function. I have made an educated guess that IE7 is not handling the response properly, but I really don't know. Here is the actual code that causes problems:

function uploadScript() {

$("#uploadScript").ajaxSubmit({
    beforeSend: function() {

        $("#uploadScript").attr("disabled", true);

    },
    dataType: "json",
    cache: false,
    success: function(response, status, xhr) {
        if(response != undefined) {
            commandArray = ([]).concat(response.command);
            paramsArray = ([]).concat(response.params);
            IDArray = ([]).concat(response.id);
            commandID = response.commandID;
            updateScriptView();
        }

    }
})

}

I have already tried explicitly setting the response header content type to 'application/json' to no avail. I have even read somewhere that such a header will even cause IE to bug out, so that front has certainly been confusing.

Perhaps it is the JSON syntax? Nope! I checked it, double checked it, then ran it through JSONLint just to be sure.

Any ideas on what I'm doing wrong?

EDIT: The JSON response literally is this:

{ "command" : ["sequential","wait","tune","endsequential"],"params" : [["5"],["00:00:03"],["202","RA29B[*]"],["100000"]],"id" : [100000,100002,100003,100001],"commandID" : 100004}

Eye-friendly is this:

{
"command": [
    "sequential",
    "wait",
    "tune",
    "endsequential"
],
"params": [
    [
        "5"
    ],
    [
        "00:00:03"
    ],
    [
        "202",
        "RA29B[*]"
    ],
    [
        "100000"
    ]
],
"id": [
    100000,
    100002,
    100003,
    100001
],
"commandID": 100004
}

ANSWERED! Apparently, my $.attr() call in the beforeSend option of the ajaxSubmit() was causing problems in IE7. I do not know why this is the case, and my Googling yielded no results (Gotta Google the right question to get the right answer). Anyway, removing this code block solved my issue. I appreciate ALL the help that was given to me. Thanks guys!

1

There are 1 answers

2
AudioBubble On BEST ANSWER

Looks like you're using malsup plugin. If that's the case then the git repo has some known issues with this plugin:

https://github.com/malsup/form/issues

Check that your issue is not one already reported. Also check you jQuery version

this is the one for you: https://github.com/malsup/form/issues/179