2010-12-01 15 views
2
$.ajax({ 
    type: 'POST', 
    url: URL +'/foo/', 
    data: {'pass': pass}, 
    dataType: "json", 
    jsonp:'jsonp_callback', 
    success: function(data) { 
    if (data["success"] === "false") { 
     $("#password").val(""); 
     $('.error-message').removeClass('hide') 
     $('.error-message').addClass('show') 
    } 
    else { 
     var tempUrl="http://10.0.1.101:9000/bar/" 
     location.href=tempUrl; 
    } 
    }, 
}); 
return false 

これは、Mozilla、Chrome、Safariで正常に動作しています。しかしIEにはない。理由は何か。私はサーバーからsuucessの値を返しています。成功の場合は、tempUrlにリダイレクトされます。 しかし、IEには何も載っていません。 ajaxはIEではまったく動作していないようです。IEとAjaxにはなぜ大きな問題がありますか?

+2

はあなたが反対テストしているIEのバージョン(複数可)を指定してください。 (IEはうんざりですが、IE6はIE8よりもはるかに厄介です)。 – Spudley

+0

JavaScriptエラーが表示されますか? – Heikki

+0

IE 7と私はJSエラーが表示されません。 – webajax

答えて

0

あなたはこれらの行の最後にセミコロンを追加する必要があります:あなたは、「ぶら下がりコンマ」問題(あなたのsuccessパラメータの閉鎖}後にカンマ)に実行している

$('.error-message').removeClass('hide') 
$('.error-message').addClass('show') 
var tempUrl="http://10.0.1.101:9000/bar/" 
+0

彼はすべきですが、それは間違っていません。 –

4

。 IEは、オブジェクトリテラルのコンマをぶら下げているのではなく、シンタックスエラーとして扱い、スクリプトが死んでしまいます。 (これはIEのバグではなく、以前の仕様の合理的な解釈ですが、最新の仕様では特にカンマが許されていますが、これはIE8で修正されています)オフトピック:IEには、配列リテラルにコンマがあります(これはまだIE8にあります)。両方isuses this article

よりが、基本的には:

$.ajax({ 
    type: 'POST', 
    url: URL +'/foo/', 
    data: {'pass': pass}, 
    dataType: "json", 
    jsonp:'jsonp_callback', 
    success: function(data) { 
    if (data["success"] === "false") { 
     $("#password").val(""); 
     $('.error-message').removeClass('hide') // <== Strongly recommend ; here 
     $('.error-message').addClass('show')  // <== Another ; here 
    } 
    else { 
     var tempUrl="http://10.0.1.101:9000/bar/" // <== Another ; here 
     location.href=tempUrl; 
    } 
    }, // <== This comma is the problem 
}); 
return false         // <== Another ; here 

は、底部付近にノートを参照してください。コンマを削除しても問題ありません。物事は改善されています(上記リンク先の記事で概説されています)が、野生での最大限の互換性のためには、これをもう少し長く見なければなりません。

(他のノートには、オフトピックですが、もう一度、強くはセミコロン挿入に頼ることはありません、同様にそれらの固定をお勧めします。)

関連する問題