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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление количества загрузок на странице... ...без обновления страницы!(не работает) 
:(
    Опции темы
navodri
Дата 30.1.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



День добрый, уважаемые. Вопрос в следующем. У меня на странице нормально работает вывод количества загрузок файла через - <script language="javascript" src="view.php?uri=1.zip"></script> при обновлении страницы.  Тогда почему не работает связка document.getElementById('File1').src = 'view.php?uri=1.zip'; ? Что я делаю неправильно? В данном примере хочу реализовать мгновенное обновление количества загрузок на странице без ее обновления.


Код

<script>
 function ChangeClick() {
  document.getElementById('File1').src = 'view.php?uri=1.zip';
 }
</script>


Ссылка на файл и счетчик загрузок:
<a href="clicks.php?uri=1.zip" OnClick="ChangeClick();"> Ссылка 1 </a>

Вывод количества загрузок (не работает):
Загрузок: <input type=text id="File1"></input>

Вывод количества загрузок (работает):
<script language="javascript" src="view.php?uri=1.zip"></script>

PM MAIL WWW   Вверх
navodri
Дата 4.2.2008, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ребята, неужели никаких соображений нету? Где моя ошибка?
PM MAIL WWW   Вверх
ksnk
Дата 4.2.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Судя по внешнему виду html view.php?uri=1.zip сгенерирует что-то вроде
document.write('<?=$DOWNLOAD_COUNTER?>'); То есть ежели каким-то чудом его и удастся вызвать еще раз - ничего приличного, кроме порчи уже отрисованого документа добится не удастся. Нужно поправить view.php так, чтобы он мог работать с AJAX-ом , к примеру, в таком виде view.php?uri=1.zip&ajax=true, и приписать Ajax-загружалку этого счетчика.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Sardar
Дата 4.2.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Цитата(navodri @  4.2.2008,  09:56 Найти цитируемый пост)
Ребята, неужели никаких соображений нету?

Свойства src у input'а нет, хотя фантазия с src не плохая... по моему никто так даже не думал с текстовым полем обращаться smile

Как уже советовали вбей ajax в поиск, это обсуждалось/решалось не одну сотню раз.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
navodri
Дата 5.2.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я понял. А какой компонент имеет свойства SRC кроме картинки? Кстати, порылся в поиске и решения так и не нашел...

Это сообщение отредактировал(а) navodri - 5.2.2008, 12:36
PM MAIL WWW   Вверх
Ghirik
Дата 5.2.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1. Создайте на вашей странице скрытый фрейм.
2. Задайте начальную страницу фрейма view.php?uri=1.zip.
3. Создайте JavaScript-функцию, которая будет обновлять содержимое фрейма и копировать его в нужное вам место, по нужному вам событию.

Должно работать.

Добавлено через 3 минуты и 9 секунд
Цитата

А какой компонент имеет свойства SRC кроме картинки?

Наберите в поисковике "атрибут src  тэга".

Это сообщение отредактировал(а) Ghirik - 5.2.2008, 14:23


--------------------
Отдадим всё клиенту, пускай его машина мучается...

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


Бывалый
*


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

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



Я так понимаю, что простым способом это не решить? Неужели нету аналога этой цепочки:

Код

<script language="javascript" src="view.php?uri=1.zip"></script> 


, чтобы ее можно было обновить без перезагрузки, динамически?
PM MAIL WWW   Вверх
bars80080
Дата 5.2.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



для динамики без аякса, я слышал такой вариант
создаём объект Image, присваиваем его свойству src нужный адрес серверного скрипта,
возвращается рисунок
скажем в простейшем случае нам надо получить ответ да или нет,
соответственно возвращаем рисунок с шириной в 1 или 2 пикселя,
считываем свойство ширина - выводим ответ, а рисунок уничтожаем

как для подсчёта тут реализовать, не совсем догадываюсь, да и решение это лукавое

проще всё же грузить скрытый iframe, у которог есть атрибут src, он может возвращать в документе некий элемент с известным id и считывать оттуда число - ответ
PM MAIL WWW   Вверх
Ghirik
Дата 5.2.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Я так понимаю, что простым способом это не решить? 


Это и есть простой способ. smile 

Дайте ваш view.php, попробую сделать.....

Добавлено через 1 минуту и 1 секунду
Цитата

для динамики без аякса, я слышал такой вариант
создаём объект Image, присваиваем его свойству src нужный адрес серверного скрипта,
возвращается рисунок
скажем в простейшем случае нам надо получить ответ да или нет,
соответственно возвращаем рисунок с шириной в 1 или 2 пикселя,
считываем свойство ширина - выводим ответ, а рисунок уничтожаем


Прикольно... smile  Голь на выдумки хитра... smile 


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
navodri
Дата 6.2.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот так выглядит VIEW.PHP

Код

<?php
include './function.php';

$view = 0;

if (isset($_GET['uri']))
{
    $uri = $_GET['uri'];
    $str = findStr('clicks.dat', $uri);
    if ($str['ind'] != -1) $view = $str[1];
}

echo 'document.write("'.$view.'");';
exit;
?>

PM MAIL WWW   Вверх
Ghirik
Дата 6.2.2008, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот посмотрите.

Это с таким wiew.php:

Код

<html>
<body onload="parent.document.getElementById('p1').innerHTML=document.getElementById('get').innerHTML">
<p id="get">
<?php
$view = 'is not chose';
if (isset($_GET['uri']))
{
    $view = $_GET['uri'];
}
echo $view;
exit;
?>
</p>
</body>
</html>


Там сами переделайте под задачу.....

Ну и тогда содержимое GET_rotation_through_iframe.htm:

Код

<html>
<head>
</head>
<body>
<p id="p1">&nbsp;</p>
<form method="GET" action="wiew.php" target="frm">
    <p><select id="uri" name="uri" size="1">
    <option selected>Please file select...</option>
    <option value="1024 kb">hren.zip</option>
    <option value="2048 kb">ben.zip</option>
    <option value="512 kb">balaben.tar</option>
    </select></p>
    <p><input type="submit" value="Отправить" name="B1"></p>
</form>
<p><iframe id="frm" name="frm" src="wiew.php" style="display: none">
</iframe></p>
</body>
</html>


Куда уж проще...  smile  на основной странице даже нету скриптов...



Это сообщение отредактировал(а) Ghirik - 6.2.2008, 19:44


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Ghirik
Дата 6.2.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Подумалось...
Таким образом можно интересное распределение ресурсов организовать.... На одном сервере - совершенно голый Apache и чистый html+статика(картинки и т.п...), а другой опритизирован под выполнение скриптов. Можно будет серьезные нагрузки "малой кровью" переваривать.... А если базу на третий сервер поставить..... smile 


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
ksnk
Дата 6.2.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Вот вариант с  Ajax'ом. Получить этот результат, и так как это простой текст - выесть из него то, что надо регулярками...
В принципе, серверную часть можно и не менять... Дописать вот только такое:
Код

    /**
     * выдать XmlHTTP Request
     */
    function getReq(){
        req = null;
        if (window.XMLHttpRequest) {
            try {
                req = new XMLHttpRequest();
            } catch (e){}
        } else if (window.ActiveXObject) {
            try {
                req = new ActiveXObject('Msxml2.XMLHTTP');
            } catch (e){
                try {
                    req = new ActiveXObject('Microsoft.XMLHTTP');
                } catch (e){}
            }
        }
        return req;        
    }
/**
 * загрузить чего-то откуда-то
 * @param {Object} url
 * @param {Object} data
 * @param {Object} callback
 */
    function getUrl(url,data,callback) {
        var req=getReq();
        if (req) {
            var reqTimeout;    
            req.onreadystatechange = function(){
                if (req.readyState == 4) {
                    clearTimeout(reqTimeout);
                    if(req.status == 200)
                      callback(req.responseText, '');
                    else 
                      callback(req.responseText,req.statusText) 
                }
            }    
            req.open("GET", url, true);
            req.send(data);
            reqTimeout = setTimeout(function(){callback('','timeout')}, 20000);
        } else {
            alert("Браузер не поддерживает AJAX");
        }
    }

// ну и сама раздача...
function ChangeCick(){
    getUrl('view.php?uri=1.zip',null,function(t,e){
       if(e) alert(e);
       if (t) {
          if((t=t.match(/document\.write\("([^"]+)/)))
              document.getElementById('File1').value=t[1]
       }
    })
}

Ajax натырил тут по форуму, саму функцию писал на коленке, так что проверить на ошибки не помешает...


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


 




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


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

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