Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Chrome и JQuery

21K
16 апреля 2012 года
evil_rabbit
60 / / 27.08.2008
Здравствуйте, помогите вот с какой проблемой:
Есть код, который получает с сервера данные и отображает их в виде таблицы, таблицу заполняю с помощью jQuery.Templates, данные получаю простым $.ajax() (хотя пробовал и get).
У меня в браузере, Chrome 18, Win7, всё корректно отображается и обоновляется раз в 5 секунд (так задумано). Но на соседней машине, где точно такой же Chrome 18, но на WinXP этот код не работает - он просто не получает ничего.
Вот код (я не гуру js):

Код:
tableController = new (function(){
    var self = this;
    var compiledTemplate = null;
   
    this.lastStage = null;
   
    this.prepareTemplate = function(){
        $('#points_table_header_tmpl').template('points_table_header');
        compiledTemplate = $('#points_table_tr_tmpl').template('points_table');
    }
   
    this.onUpdate = function(data){
        // Перестроить таблицу, основываясь на полученных данных
        self.lastStage = data['round'];
        self.updateTemplate(self.lastStage);
    };
   
    this.updateTemplate = function(data){
        if( compiledTemplate ){
            $('#points_table').empty();
            $('#points_table').append($.tmpl('points_table_header'));
            $('#points_table').append($.tmpl('points_table', data));
        }else{
            this.prepareTemplate();
            this.updateTemplate(data);
        }
    }
   
    this.updateData = function(){
        //$.get('/ajax/get_round', {}, this.onUpdate, 'json');
        $.ajax({
            type: 'GET',
            url: '/games_ajax/get_round',
            success: this.onUpdate,
            dataType: 'json',
            data: "",
            contentType: "application/json; charset=utf-8",
            async: false
        });
    };
   
})();

$(document).ready(function(){
    tableController.updateData();
    var updateTimer = setInterval(function(){
        tableController.updateData();
    }, 5000);
});
Сервер возвращает JSON-строку, вида:

Код:
{"round":[
    {"id":273,
    "name":"super-mega-username",
    "stages":[
        {"points":6},
        {"points":76},
        ...
        ],
    "stage_sum":249,
    "round_sum":0
    },
    ...
]}

Если он возвращает просто "а", то она доходит до всех. Причем другие браузеры (кроме ие, разумеется) ведут себя нормально и отображают таблицу.
Надеюсь на вашу помощь.
21K
17 апреля 2012 года
evil_rabbit
60 / / 27.08.2008
Ошибок быть не может, т.к. с моего компа запрос идёт (сервер на другой машине). Все на всех машинах, во всех браузерах всё работает как часы (кроме ие, разумеется). У меня при дампе в консоль выдаёт массив объектов ( так: [ Object, Object, ..., Object ] ), а на WinXP просто пустой массив ( который [ ] ). Вроде в интернетах люди пишут, что у них подобные проблемы, но их решение (установить data: null или data: "") мне не помогло.
UPD
Ослик ИЕ сдался и стал работать как надо, после того, как я принудительно вычистил ему кеш грязным ёршиком и проставил no-cache заголовки.
UPD2
Хром тоже заработал.
285
16 апреля 2012 года
Romik
479 / / 24.11.2002
Что отображается при отправке-получении запроса в Developer Tools (F12) -> Network -> XHR?
Добавьте обработчик для error в $.ajax, посмотрите что он покажет.

Посмотрите что в логах web-сервера, запрос к нему вообще доходит, нет ли ошибок?

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог