Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает AJAX в IE7, Изменение кодировки на 1251 не помогает 
:(
    Опции темы
zodiac
Дата 13.9.2011, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 3.7.2009

Репутация: нет
Всего: нет



Здравствуйте!
Столкнулся с такой проблемой: в IE 7 не работает AJAX + JQuery скрипт "бесконечной прокрутки" (сама страничка находится здесь). При нажатии на кнопку "Отправить" новые комментарии не появляются, и не отображаются до тех пор, пока страницу не откроют в новой вкладке. При этом проблема явно не в кодировке (известный баг, его фикс не решает описанное). Я думаю, что раз для отображения комментария приходится открывать страницу в новой вкладке (иначе хоть убей, не работает), IE сбрасывает какой-то очень важный параметр именно когда пользователь закрывает вкладку.
Может и дико звучит, но я раньше ни с чем подобным не сталкивался, и даже не знаю, в каком направлении копать. Код абсолютно работоспособен, по логике, проблем вообще быть не должно. Подскажите, пожалуйста, почему так происходит?

Код

// script for endless scrolling using jQuery
// demo: http://www.jstoolbox.com/demo/endless/
var engine = {

    posts : [],
    target : null,
    busy : false,
    count : 20,
    action : 'list',
    render : function(obj){
        var xhtml = '<div class="post" id=post_'+obj.real_id+'>';
        xhtml += '<div class="content">' + obj.content + '</div>';
        xhtml += '<div class="close"><a href="#"   onClick="deleteMessage('+obj.real_id+');"><img src="./img/delete.png" class="deleteimg" /></a></div>';
        if (obj.posted_at) {
            xhtml += '<div class="posted_at"><span class="post_date">['+obj.posted_at+']</span></div>';
        }
        
        xhtml += '</div>';
        return xhtml;
    },
    init : function(posts, target){

        if (!target)
            return;

        this.target = $(target);

        this.append(posts);

        var that = this;
        $(window).scroll(function(){
            if ($(document).height() - $(window).height() <= $(window).scrollTop() + 50) {
                that.scrollPosition = $(window).scrollTop();
                that.get();
            }
        });
    },

    append : function(posts){
        posts = (posts instanceof Array) ? posts : [];
        this.posts = this.posts.concat(posts);

        for (var i=0, len = posts.length; i<len; i++) {
            this.target.append(this.render(posts[i]));
        }

        if (this.scrollPosition !== undefined && this.scrollPosition !== null) {
            $(window).scrollTop(this.scrollPosition);
        }
    },

    get : function() {

        if (!this.target || this.busy) return;

        if (this.posts && this.posts.length) {
            var lastId = this.posts[this.posts.length-1].id;
        } else {
            var lastId = 0;
        }

        this.setBusy(true);
        var that = this;

        $.getJSON('./php/function.php', {'action':this.action,count:this.count, last:lastId,'text':this.search},
            function(data){
                if (data.length > 0) {
                    that.append(data);
                }
                that.setBusy(false);
            }
        );
    },

    showLoading : function(bState){
        var loading = $('#loading');

        if (bState) {
            $(this.target).append(loading);
            loading.show('slow');
        } else {
            $('#loading').hide();
        }
    },

    setBusy : function(bState){
        this.showLoading(this.busy = bState);
    }
};
function deleteMessage(objid){
    if (objid){
    $.get('php/function.php',{'action':'delete','msg_id':objid},
        function(data){
            $('#post_'+objid).remove();
        });
    }
}
$(document).ready(function(){
    engine.init(null, $("#news"));
    engine.action = 'list';
    engine.get();
    $('#loading').ajaxStart(function(){
        $(this).html("<b>Loading.... </b><img src='./img/loadingAnimation.gif'></img>");
        $(this).show();
    });   
    $('#loading').ajaxStop(function(){
        $(this).empty();
        $(this).hide();
     }); 
    
});

PM MAIL   Вверх
mcTep
Дата 13.9.2011, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 25.2.2009

Репутация: 1
Всего: 6



по-моему тут аякса нет. 

Вот этот код вообще перезагружает страницу:
Код

function(data){
    ///$('#news').empty();
    ///$('#news').append(data);
    document.location.href = '';
});


попробуйте убрать это.. Что получится?
может ИЕ болезненно реагирует на обращение к location..
PM MAIL   Вверх
InfMag
Дата 13.9.2011, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



И плюс ко всему, нельзя менять location по document, если браузер и позволяет это делать, это неверно и по сути ошибка.
Код

window.location.href = '…';

А вообще прекрасно работает везде (даже в IE6):
Код

location = '…';

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.