$ .getJSON - ajax отправляется, но функция обратного вызова игнорируется - Internet Explorer - PullRequest
3 голосов
/ 24 августа 2011

Итак, вот моя функция

function ajax(addr,loading, loadTo, json){
        addr = addr.replace(' ', '');
        if (loading){
                $("#"+loading).fadeIn();
        }

        if (json){
                $.getJSON(addr, function(data){
                        alert('whoooo working'); // <--- it never goes here
                        if (loading){
                                $("#"+loading).fadeOut();
                        }
                        procJSON(data);
                });
                return true;
        }
}

, и я вызываю ее с

var postid = $(this).attr('data-postid');
ajax(url+'tools/delete/'+postid, 'loading'+postid, false, true);

. Передается ajax, отображается изображение (загрузка изображения), но функция обратного вызова никогда не выполняется.называется.

Разве это не просто новое зарезервированное значение из большого списка этого IE?Да, я знаю, IE не является действующим браузером, но я не могу винить своих клиентов

1 Ответ

6 голосов
/ 24 августа 2011

Поскольку в определенных браузерах происходит сбой, вероятно, это сочетание неожиданных заголовков в ответе и того, как браузер обрабатывает данные, основанные на этом.

Если, например, ответ имеет тип содержимого text/html вместо application/json, браузер может попытаться преобразовать содержимое ответа в документ HTML (добавив вокруг него теги pre), что приведет к Сбой анализа JSON.

Если вы используете метод $.ajax, вы также можете перехватить любое сообщение об ошибке, которое даст вам подсказку о том, что происходит:

$.ajax({
  url: addr,
  dataType: 'json',
  success: function(data){
    alert('whoooo working'); // <--- it never goes here
    if (loading){
      $("#"+loading).fadeOut();
    }
    procJSON(data);
  },
  error: function(o,c,m) { alert(m); }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...