これは、私の最愛の webapp を世に送り出す前に私がしなければならない最後のことですが、もちろん IE7 は私には難しいです!!
サーバーにデータをアップロードするために JQuery Form プラグインを使用しています。次に、サーブレット クラスがファイルに対していくつかの操作を実行し、JSON をクライアントに送り返します。いつものように、Chrome と Firefox はチャンピオンのように応答を処理し、期待どおりの出力を提供してくれます。
Internet Explorer 7 にはありません。「Object Expected」エラーが発生します.... 問題を 1 つの関数に絞り込みました。私は、IE7 が応答を適切に処理していないという知識に基づいた推測を行いましたが、実際にはわかりません。問題を引き起こす実際のコードは次のとおりです。
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();
}
}
})
}
応答ヘッダーのコンテンツタイプを「application/json」に明示的に設定しようとしましたが、役に立ちませんでした。私はどこかで、そのようなヘッダーがIEのバグを引き起こすことさえあると読んだことがあります。そのため、フロントは確かに混乱しています。
おそらくJSON構文ですか?いいえ!私はそれをチェックし、二重にチェックし、念のため JSONLint を実行しました。
私が間違っていることについてのアイデアはありますか?
編集: JSON 応答は文字通りこれです:
{ "command" : ["sequential","wait","tune","endsequential"],"params" : [["5"],["00:00:03"],["202","RA29B[*]"],["100000"]],"id" : [100000,100002,100003,100001],"commandID" : 100004}
目に優しいのはこれです:
{
"command": [
"sequential",
"wait",
"tune",
"endsequential"
],
"params": [
[
"5"
],
[
"00:00:03"
],
[
"202",
"RA29B[*]"
],
[
"100000"
]
],
"id": [
100000,
100002,
100003,
100001
],
"commandID": 100004
}
答えた!どうやら、ajaxSubmit() の beforeSend オプションでの $.attr() 呼び出しが IE7 で問題を引き起こしていたようです。なぜそうなのかはわかりませんが、私のグーグル検索では結果が得られませんでした (正しい答えを得るには、正しい質問をグーグル検索する必要があります)。とにかく、このコードブロックを削除すると問題が解決しました。私に与えられたすべての助けに感謝します。みんなありがとう!