$.getJSON не работает в Internet Explorer

Я использую следующий код для получения данных из JSON.

 $(document).ready(function()
 {
   $.getJSON("http://www.example.com/data.php?id=113&out=json", function(data) {

        $.each(data.issue.page, function(i,item) {
            imagesJSON[i] = item["@attributes"];
        });

       alert(imagesJSON.length);
    });
 });

Он работает в Mozilla, Chrome и других браузерах, но не в IE. (Нет ни в одной версии).


person Community    schedule 25.04.2012    source источник
comment
если бы мы могли видеть результат JSON...   -  person gdoron is supporting Monica    schedule 25.04.2012
comment
какая версия jquery и находится ли эта ссылка в домене, на котором находится ваш скрипт?   -  person Dominic    schedule 25.04.2012
comment
Результаты добавления кода отладки внутри обратного вызова?   -  person Quentin    schedule 25.04.2012
comment
он ничего не покажет. даже ошибки нет.   -  person    schedule 25.04.2012
comment
Попробуйте с $.ajax и cache: false   -  person binarious    schedule 25.04.2012
comment
Может быть проблема с той же политикой происхождения, но тогда она не должна работать в других браузерах, если это так. Использование $.ajax позволит вам установить блок error: function(x) { }, а затем перехватить ошибку и посмотреть на x.responseText, чтобы увидеть, возвращается ли ошибка.   -  person SpaceBison    schedule 25.04.2012
comment
IE выдает ошибку типа Ошибка, нет транспорта   -  person    schedule 26.04.2012
comment
@ketan: каков фактический URL-адрес и не могли бы вы предоставить нам данные json?   -  person Spoike    schedule 26.04.2012
comment
@ketan: Похоже, что bluetoad не позволяет IE получить доступ к их URL-адресу data.php (вы получаете ту же проблему, когда переходите по этой ссылке непосредственно в IE). Похоже, у них проблема с конфигурацией. Здесь нечего делать, кроме как связаться с ними по поводу проблемы.   -  person Spoike    schedule 26.04.2012
comment
хорошо спасибо за ответ и помочь мне много. у тебя хорошие знания.   -  person    schedule 26.04.2012


Ответы (2)


$.getJSON имеет тенденцию к кеширует результаты в IE. Вместо этого используйте $.ajax.

Связанный вызов должен быть примерно таким в вашем случае:

// Not really sure if you've forgot to var 
var imagesJSON = [];

$.ajax({
  url: "www.example.com/data.php?id=113&out=json",
  cache: false,
  dataType: "json",
  success: function(data) {
    $.each(data.issue.page, function(i,item) {
        imagesJSON[i] = item["@attributes"];
    });

    alert(imagesJSON.length);
  },
  error: function (request, status, error) { alert(status + ", " + error); }
});

Убедитесь, что у вас есть cache: false.


ОБНОВЛЕНИЕ:

Похоже, это проблема конфигурации на хосте с URL-адресом запроса, который фактически использует OP. Переход к URL-адресу напрямую с помощью веб-браузера IE приводит к прерыванию работы хоста. Вы ничего не можете сделать, кроме как сообщить о проблеме хосту, например, отправить электронное письмо веб-мастеру хоста.

person Spoike    schedule 25.04.2012
comment
Я использую это. Есть ли проблема $.ajax({ url: "http://www.xyz.com/data.php?id=113&out=json", cache: false, dataType: "json", success: function(data) { $.each(data.issue.page, function (i, item) { imagesJSON[i] = item["@attributes"]; alert(imagesJSON.length); }); error: function (request, status, error) { alert(status + ", " + error); } - person ; 25.04.2012
comment
@ketan: ты уверен, что правильно пишешь? значение для ключевой ошибки (это та функция, которая у вас есть) должно быть внутри массива параметров для функции $.ajax. - person Spoike; 25.04.2012
comment
Вышеупомянутые вещи дают мне ошибку в IE, например Ошибка, нет транспорта - person ; 26.04.2012

У меня была такая же ошибка на странице, и я добавил эти строки:

<!--[if lte IE 9]>
<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.0/jquery.xdomainrequest.min.js'></script>
<![endif]-->

и это, наконец, работает для меня;) больше нет ошибок для IE9

Этот пост помогает мне jQuery Call to WebService возвращает ошибку No Transport

person bsuttor    schedule 20.01.2014