Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > обновить окошко написанное на AJAX


Автор: Samotnik 18.2.2008, 16:34
Значит есть приложение, написанное на AJAX   значит в нем по нажатию на кнопочку появляется окошко с различной инфой.  Так вот в это окошко нужно прописать кнопочку, по нажатию на  которое  окошечко будет обновлятся, и следовательно показывать новую инфу...  
Вот значит, внимание вопрос, как обновить это окошечко  ??   Метод 
Код

onclick="window.location.reload();

не пойдет, т.к.  будет обновлятся все приложение вцелом!!  А мне нужно тока одно окошечко  
 smile 

Автор: Itsys 18.2.2008, 16:42
Все просто надо снова запустить обработчик onClick первоначальной кнопки (там скорее всего указана определенная функция, которая отвечает за загрузку информации), и, если все сделано правильно, то функция сама обновит информацию в окошке, а если не правильно, то придется сначала очистить существующее окно (оно скорее всего сдлеано div-ом) .innerHTML = "";

Если ты приведешь код, то разговор будет более подробным  smile 

Автор: Хрипа 18.2.2008, 16:45
Samotnik, делай новый Ajax запрос и получай инфу smile 

Автор: Samotnik 18.2.2008, 16:53
Хрипа,   не  smile    так нельзя   (по мои  причинам)

Автор: Itsys 18.2.2008, 16:54
Покажи существующий код

Автор: Samotnik 18.2.2008, 16:58
Цитата(Itsys @  18.2.2008,  16:42 Найти цитируемый пост)
Если ты приведешь код, то разговор будет более подробным
 
 smile   Конечно, все очень просто,  есть 2 функции  1-я отправляет запрос на сервер,  2-я принимает ответ и отображает инфу  
Код

com_main.prototype.init = function() {
    var dlg = this.dlg = this.task.dlg;
    var butn = document.createElement('input');
    butn.type="button";
    butn.value = 'Refresh';
    butn.onclick = ' что сюда написать, чтоб окошко  обновилось ??????';
    this.task.dlg.getContentDiv().appendChild(butn);

    dlg.getContentDiv().style.overflow = "hidden";
    var data = "";
    sfSystem.callAction("NewAction", data, this.callback, this);
}

com_main.prototype.callback = function(res, _this) {
    res = sfSystem.fromJSON(res.responseText);
    if (res.fault) {
        alert(res.fault);
    } else {
        var t = document.createElement('textarea');
        t.setAttribute("rows", "20");
        t.setAttribute("cols", "100");
        t.value = res.result;
        _this.task.dlg.getContentDiv().appendChild(t);
    }
}

Автор: Royan 18.2.2008, 17:00
Если win instanceof Window возвращает true (класс Window поддерживает только FF, поэтому я это говорю только для того чтобы однозначно определить разницу между классом Window и всеми остальными классами). Так вот если это так то можно так:

Код

win = window.open("http://www.google.com", "mywin", "width=200, height=200")
setTimeout(function(){win.location="http://ya.ru"}, 5000);

Автор: Samotnik 18.2.2008, 17:08
Royan,  чет  я не особо понял, что тут выполняется ??
ПЭ.Эс.
Можно ли как нить словить фокус моего окошка и написать  
Код

window.location.reload();

но тока для моего окна ??  Или  для  AJAX   этот   метод вообще не приемлем ???

Автор: Nigel 18.2.2008, 17:18
А если так
Код

butn.onclick = function(){self.location.href='http://ya.ru';}

Автор: Itsys 18.2.2008, 17:29
Код

com_main.prototype.init = function() {
    var dlg = this.dlg = this.task.dlg;
    var butn = document.createElement('input');
    butn.type="button";
    butn.value = 'Refresh';
    butn.onclick = function(){var data = ""; sfSystem.callAction("NewAction", data, this.callback, this);};
    this.task.dlg.getContentDiv().appendChild(butn);

    dlg.getContentDiv().style.overflow = "hidden";
    var data = "";
    sfSystem.callAction("NewAction", data, this.callback, this);
}


А дальше в callback надо определить если 'textarea' есть - то обновить, если нет, то создать

Автор: Samotnik 18.2.2008, 17:48
Цитата(Itsys @  18.2.2008,  17:29 Найти цитируемый пост)
А дальше в callback надо определить если 'textarea' есть - то обновить, если нет, то создать

Пасибо большое, то что надо !!!!   smile 
а как ??  smile 

Автор: Itsys 18.2.2008, 17:57

Определи t заранее

Код

com_main.prototype.callback = function(res, _this) {
    res = sfSystem.fromJSON(res.responseText);
    if (res.fault) {
        alert(res.fault);
    } else {
        if (_this.t){
            _this.t.value = res.result;
        }
        else {
            _this.t = document.createElement('textarea');
            _this.t.setAttribute("rows", "20");
            _this.t.setAttribute("cols", "100");
            _this.t.value = res.result;
            _this.task.dlg.getContentDiv().appendChild(_this.t);
        }
    }
}


Автор: Samotnik 18.2.2008, 18:45
Itsys,  пасибо   smile 

Автор: Sardar 18.2.2008, 19:37
Цитата(Samotnik @  18.2.2008,  16:08 Найти цитируемый пост)
Можно ли как нить словить фокус моего окошка и написать

Samotnik, как открыл окно? window.open? тогда тебе возвращается хендл окна, от него .location.reload() как показал Royan.
Если это слой на абсолютной позиции, то отдельным запросом сменяем (в простейшем случае) всё содержимое слоя, http://www.prototypejs.org/api/ajax/updater готовое решение.



M
Sardar
Ну и вопросы в последние две недели, как будто толпа с улицы открыла для себя браузер...  Особено убивают пояснения "в JS noль" или "только открыл"... 1 сутки на мануал позволит себе любой...
Мля наболело =)

Автор: Samotnik 18.2.2008, 19:52
Цитата(Sardar @  18.2.2008,  19:37 Найти цитируемый пост)
 1 сутки на мануал позволит себе любой...

может поможите ссылочкой ??   чтоб  таких вопросов больше небыло ??? 
 smile 

Автор: Sardar 18.2.2008, 20:36
Ой, это я скрытым текстом хотел написать, а вышло как mod  smile 
Извини, если задел.

Если ты осилишь это: http://wdh.suncloud.ru/contents.htm - то у тебя не останется вопросов. Вообще, т.к. даже самое свежее ты будешь схватывать на лету (общая техника, наработанное восприятие, опыт).

Для этого раздела достаточно посвятить 1-2 полных дня на: http://wdh.suncloud.ru/js01.htm#ref3

Свежее лучше вбить в строку поиска: http://developer.mozilla.org/en/docs/Main_Page

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)