JQuery AJAX запрос не удается в IE - PullRequest
38 голосов
/ 08 января 2009

Сбой следующего вызова 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

Ответы [ 8 ]

51 голосов
/ 29 августа 2009

Исправлено, я изменил тип контента с application/json; charset=utf8 на обычный application/json.
Я ненавижу IE:)

Также, чтобы избежать супер-кэширования IE, попробуйте следующее:

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

Таким образом, каждый запрос - это новый URL для IE: D

48 голосов
/ 09 января 2009

Для проблемы с кэшированием, почему бы вам просто не использовать параметр cache: false?

$.ajax({ 
    url: "yoururl",
    cache: false,
    ....
8 голосов
/ 09 января 2009

это копия / вставка? единственная вещь, которая заставляет меня все время оставаться, - это оставлять последний «,» в конструкторе объектов. то есть большинство браузеров JS принимают:

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

но IE задыхается от этого, потому что запятая после последнего элемента. измените его на:

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

и это работает.

6 голосов
/ 26 марта 2013

В более новых версиях Internet Explorer (IE7) необходимо написать следующую строку перед вызовом $. Ajax , иначе он никогда не вызовет функцию:

$.ajaxSetup({ cache: false }); //this line before $.ajax!!!
$.ajax({
    //codes
    //codes
    //codes
});
3 голосов
/ 09 января 2009

IE кеширует AJAX-запросы очень агрессивно (во всяком случае, больше, чем Firefox). Вам необходимо соответствующим образом установить заголовки Cache-Control в ответе, если это не подходит для вашего сайта.

2 голосов
/ 09 января 2009

Одной из основных проблем со статически сгенерированными JSON и IE являются ведущие запятые, например, в IE возникает ошибка:

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

Обратите внимание на последнюю запятую.

0 голосов
/ 07 мая 2010

IE: не определена ошибка JSON в

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

с помощью dataType: "json" и избегать разбора

0 голосов
/ 09 января 2009

О чем говорит предоставление фрагмента {{SITE_URL}}. Попробуйте посмотреть код в исходном коде браузера. Если блок {{SITE _URL}} имеет косую черту и это делает URL запроса:

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

Что может выползти из IE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...