web-dev-qa-db-ja.com

jQuery AJAXリクエストの失敗IE

次のAJAX呼び出しはIEで失敗しています。

$.ajax({
    url:"{{SITE_URL}}/content/Twitter.json",
    dataType:"json",
    error:function(xhr, status, errorThrown) {
        alert(errorThrown+'\n'+status+'\n'+xhr.statusText);
    },
    success:function(json) {
               ...Snip...
    }
});

エラー関数は

Undefined
parsererror
OK

サーバーへの要求は行われないため、JSONに問題があるとは思わない。

修正済み、#1351389を参照

38
Sam

修正、コンテンツタイプをapplication/json; charset=utf8から単なるapplication/jsonに変更しました。
嫌いIE :)

IE super-cachingを回避するには、これを試してください:

var d = new Date();
$.ajax({
        url:"{{SITE_URL}}/content/Twitter.json?_="+d.getTime(), 
...Snip...

そのように、各リクエストはIEを取得するための新しいURLです。

51
Sam

キャッシュの問題については、単純にcache: falseパラメータ?

$.ajax({ 
    url: "yoururl",
    cache: false,
    ....
48
tanathos

これはコピー/貼り付けですか?常に私を得る1つのことは、オブジェクトコンストラクターに最後の '、'を残すことです。つまり、ほとんどのブラウザJSは次を受け入れます。

o = { a:1, b:2, c:3, };

しかし、IE最後のアイテムの後のコンマがこれをチョークします。

o = { a:1, b:2, c:3 };

そしてそれは動作します。

8
Javier

Internet Explorer(IE7)の新しいバージョンでは、$。ajaxを呼び出す前に次の行を記述する必要があります。そうしないと、関数が呼び出されません。

$.ajaxSetup({ cache: false }); //this line before $.ajax!!!
$.ajax({
    //codes
    //codes
    //codes
});
6
Jav_Rock

IEキャッシュAJAXリクエストは本当に積極的です(とにかくFirefoxよりも)。これがあなたのサイトに合わない場合は、応答にCache-Controlヘッダーを適切に設定する必要があります。

3
Craig Stuntz

静的に生成されたJSONとIEの1つの大きな問題は、先頭の「コンマ」です。たとえば、IEでエラーがスローされます。

{
    "one":"hello",
    "two":"hi",
 }

最後のコンマに注意してください。

2
Luca Matteis

{{SITE_URL}}チャンク提供とは何ですか。ブラウザのソースコードを表示してコードを見てみてください。 {{SITE _URL}}チャンクの末尾にスラッシュがあり、リクエストURLが作成される場合:

 http://modomain.com//content/Twitter.json 

クリープIE out?

0
Pim Jager

IE:で解決されたJSON未定義エラー

http://funkatron.com/site/comments/safely-parsing-json-in-javascript/

dataType: "json"を使用して、解析を回避する

0
user333483