Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 34

Не запускается javascript в шаблоне .tpl

13.10.2014, 19:41. Показов 2087. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь создать систему обмена мгновенными сообщениями. Добавление новых сообщений в БД работает, функция получения массива сообщений работает, не запускается функция javascript которая написана в подключаемом шаблоне .tpl
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<style>
    #dialog {
        background:white;
        height:300;
        margin: 0 auto;
        overflow-y:auto;
        color:black
}
</style>
<div id="dialog"></div>
<script type="text/javascript">
    var arraydialogmessages = new Array();
    function getXmlHttp() {
        var xmlhttp;
        try {
            xmlhttp = newActiveXObject("Msxm12.XMLHTTP");
        } catch (e) {
            try {
                xmlhttp = newActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
                xmlhttp = false;
            }
        }
        if (!xmlhttp && XMLHttpRequest != "undefened"){
            xmlhttp = XMLHttpRequest();
        }
        return xmlhttp;
    }
    window.onload = function dialog() {
        var id = %id%;
        var xmlhttp = getXmlHttp();
        xmlhttp.open("POST", "handler_real_time.php", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("update_dialog_messages=1&dialoger_id=" + id);
        xmlhttp.onreadystatechange function() {
            if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) {
                    var response = xmlhttp.responseText;
                    response = JSON.parse(response);
                    if(array.length == response.length) return;
                    var start = array.length;
                    array = response;
                    var messages = document.getElementById("dialog").innerHTML;
                    for (i = start; i < array.length; i++){
                        messages = messages + "<table width = '700' style = 'background:" + array[i].status + "; color: black;'><tr><td></td><td colspan = '2'><a href=" + array[i].address + "?view=user&id=" + array[i].sender_id + "><img src=" + array[i].address + "avatars/" + array[i].avatar + " height='20' width='20'/>" + array[i].login + "</a></td></tr><tr><td width = '80' style = 'font-size: x-small; vertical-align:top;'>" + array[i].date + "</td><td>" + array[i].text + "<hr></td><td width = '30' style = 'vertical-align:top;'><form action='handler.php' method='GET'><input type='hidden' name='message_id' value=" + array[i].message_id + "><input type='submit' id = 'delete_message' name='delete_message' class='delete'></form></td></tr></table>";
                    }
                    document.getElementById("dialog").innerHTML = messages;
                }
            }
        }
        setTimeout("dialog()", 1000);
    }
</script>
функцию пытаюсь запустить через window.onload, где только alert не пробовал вставлять! 0 реакции! знатоки подскажите пожалуйста что делать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.10.2014, 19:41
Ответы с готовыми решениями:

В tpl шаблоне не работает preg_replace
В .tpl шаблоне есть макрос {title} $tpl = file_get_contents('template.tpl'); $tpl = str_replace(&quot;{title}&quot; , $title , $tpl); //...

Как вывести tpl шаблон в шаблоне
Прошу помощи, прочитал статью http://rgblog.ru/page/template попробовал вывести шаблон, у меня все получилось, но не могу понять как...

Дополнительные поля пользователя в шаблоне login.tpl
Всем доброго времени суток! Появилась необходимость вывести данные из дополнительного поля пользователя не в userinfo.tpl, где все...

7
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
13.10.2014, 22:50
Цитата Сообщение от sarkos Посмотреть сообщение
подскажите пожалуйста что делать
переместиться в тему javascript
0
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
14.10.2014, 04:38
sarkos, почему у вас переменная используется раньше ее определения?

JavaScript
1
2
if(array.length == response.length) return;
array = response;
Хоть array и будет объявлена, но ее значение будет в первое строке равно undefined. Сначала определение, потом использование, для примера :

JavaScript
1
2
if(test) alert("work");
var test = true; // не сработает
0
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 34
14.10.2014, 10:07  [ТС]
Thisman, спасибо! подправил. Массив объявляется глобальной переменной в самом начале скрипта! Но насколько я понимаю проблема не в этом, условно говоря, если у меня в фунции dialog первая строчка alert ('123'); то при запуске функции 123 должно выводится независимо от того, как дальше выполняется функция, но этого не происходит.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<style>
    #dialog {
        background:white;
        height:300;
        margin: 0 auto;
        overflow-y:auto;
        color:black
}
</style>
<div id="dialog"></div>
<script type="text/javascript">
    var arraydialogmessages = new Array();
    function getXmlHttp() {
        var xmlhttp;
        try {
            xmlhttp = newActiveXObject("Msxm12.XMLHTTP");
        } catch (e) {
            try {
                xmlhttp = newActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
                xmlhttp = false;
            }
        }
        if (!xmlhttp && XMLHttpRequest != "undefened"){
            xmlhttp = XMLHttpRequest();
        }
        return xmlhttp;
    }
    window.onload = function dialog() {
        var id = %id%;
        var xmlhttp = getXmlHttp();
        xmlhttp.open("POST", "handler_real_time.php", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("update_dialog_messages=1&dialoger_id=" + id);
        xmlhttp.onreadystatechange function() {
            if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) {
                    var response = xmlhttp.responseText;
                    response = JSON.parse(response);
                    if(arraydialogmessages.length == response.length) return;
                    var start = arraydialogmessages.length;
                    arraydialogmessages = response;
                    var messages = document.getElementById("dialog").innerHTML;
                    for (i = start; i < array.length; i++){
                        messages = messages + "<table width = '700' style = 'background:" + array[i].status + "; color: black;'><tr><td></td><td colspan = '2'><a href=" + array[i].address + "?view=user&id=" + array[i].sender_id + "><img src=" + array[i].address + "avatars/" + array[i].avatar + " height='20' width='20'/>" + array[i].login + "</a></td></tr><tr><td width = '80' style = 'font-size: x-small; vertical-align:top;'>" + array[i].date + "</td><td>" + array[i].text + "<hr></td><td width = '30' style = 'vertical-align:top;'><form action='handler.php' method='GET'><input type='hidden' name='message_id' value=" + array[i].message_id + "><input type='submit' id = 'delete_message' value = '”далить' name='delete_message' class='delete'></form></td></tr></table>";
                    }
                    document.getElementById("dialog").innerHTML = messages;
                }
            }
        }
        setTimeout("dialog()", 1000);
    }
</script>
0
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
14.10.2014, 17:57
Цитата Сообщение от sarkos Посмотреть сообщение
xmlhttp.onreadystatechange function() {
Тут забыли знак равно

JavaScript
1
xmlhttp.onreadystatechange=function() {
0
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 34
14.10.2014, 21:16  [ТС]
Добавил = , никакой реакции. Ответьте пожалуйста на мой вопрос если у меня в фунции dialog первая строчка alert ('123'); то при запуске функции 123 должно выводится независимо от того, как дальше выполняется функция?

Добавлено через 5 минут
Thisman, беру свой вопрос назад!!! 123 у меня выводится! а раньше не выводилось!! значит функция уже запускается, а раньше не работала! спасибо вам за помощь! а то я застрял на этом месте уже очень давно,теперь буду разбираться что дальше не работает!
0
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 34
16.10.2014, 19:28  [ТС]
Спасибо Thismanу за помощь!! После исправления еще около 10 ошибок, выводятся все сообщения нормально, но вот проблема setTimeout() не работает. Как проверить ее на денвере я не знаю, а на хостинге она не работает, хотя alert вставленный после этой функции срабатывает! у меня в коде setTimeout("dialog()", 1000). Может быть ковычки здесь лишние? Или может на хостинге стоит блок этой функции. Знатоки подскажите, какие у кого идеи?
0
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
17.10.2014, 05:15
sarkos, попробуй написать вот так вот:

JavaScript
1
setTimeout(function () { dialog() }, 1000)
или так:
JavaScript
1
setTimeout(dialog, 1000)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2014, 05:15
Помогаю со студенческими работами здесь

Ошибки в файлах шаблонах header.tpl, footer.tpl
При установке нового шаблона появились косяки, а именно появились ошибки в файлах шаблонах header.tpl, footer.tpl должен по дефолту...

Не запускается JavaScript
Проблема заключается в следующем. У меня есть два файла fido.html и fido.js. Оба файла находятся в одной папке. fido.html: ...

Javascript не запускается скрипт
&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;style&gt; reveal * {display: none;} reveal * handle { display: block;} &lt;/style&gt; &lt;script...

Подключение file.tpl в file.tpl
Здравствуйте. Искал ответ на свой вопрос, находил много ответов, но все не то, что надо... В общем в файлах с расширением .php...

Как определить какой элемент JavaScript запускается на странице при клике и запустить его?
Код страницы состоит сверху из кучи javascript такого типа &lt;script type=&quot;text/javascript&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru