jQuery: IE возвращает пустой для идентификатора - PullRequest
0 голосов
/ 26 октября 2010

У меня есть интервал сердцебиения, который вызывает функцию каждые несколько секунд. Затем эта функция, в свою очередь, делает JSON-запрос к серверу через jQuery, сервер возвращает JSON-ответ и успешную функцию jQuery, как обычно. В рамках функции успеха он выполняет другую функцию jQuery, foreach для каждого идентификатора. Из каждого идентификатора вызывается другая функция, function (this). Затем эта функция делает другой JSON-запрос через jQuery и получает данные.

например:.

function function() {
 jQuery.noConflict()(function($){
  $.ajax({
   success: function(data){
    jQuery.each(data.ids, function() {
     function2(this);
    }
   });
  });
 });
}

function function2(id) {

 //In IE id is empty here

 jQuery.noConflict()(function($){
  $.ajax({
   // In IE id has data here in it, WTF
   success: function(data){
    //In IE id is empty here
   }
  });
 });
}

Кроме того, имейте в виду, что это не настоящие имена функций, это просто пример того, какова реальная проблема. Проблема заключается в том, что в IE 7 и IE 8 переменная id имеет значение EMPTY. В любом другом браузере идентификатор никогда не бывает пустым. Я не понимаю почему. Может кто-нибудь помочь мне здесь?

Спасибо

Ответы [ 2 ]

1 голос
/ 26 октября 2010

Я не уверен, как IE обрабатывает ваш синтаксис, несколько вызовов jQuery.noConlict() не нужны, вместо этого ваш вызов (если вам нужно $ внутри) должен выглядеть так:

function function2(id) {
 (function($){
  $.ajax({
   success: function(data){
   }
  });
 })(jQuery);
}

Или вместо этого, оберните все свои функции в один (function($) { /* code */ })(jQuery);, вызывая также .noConflict(), если необходимо.

1 голос
/ 26 октября 2010

Да, похоже, вы нашли ошибку в перекрестной совместимости jQuery.Я бы попробовал привязать .each() к this и свободно использовать console.log(), пока не найдете место, где скрипт перестает работать.Используя инструменты разработчика IE (нажмите f12), вы должны быть в состоянии, по крайней мере, отследить проблему.

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