В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 08/02/11 в 00:04 |
Дано: скрипт через равные промежутки времени загружает новый банер. Но чтоб узнать http адрес банера, надо запрашивать сервер. На даный момент это реализовано через ифрейм. через его перезагрузку. Пример (урезанный)
Код: |
//здесь мы обновляем ифрейм. там передается только адрес нового банера
parent.ii.location.replace(http://url);
if(parent.ii.document.all.d){
// считываем этот адрес, и загружаем картинку
ob=parent.ii.document.all.d.value;
im=new Image();im.src=ob;
}
|
недостатки что постояно перешелкивает - история увеличивается, да и ифрейм приходится скрывать и вообще.... вопрос собствено в том как просто и быстро получить с сервера адрес новой картинки. И без стороних библиотек.
Буду ну оочень благодарен.
|
|
|
|
С нами с 19.07.05
Сообщения: 318
Рейтинг: 401
|
Добавлено: 08/02/11 в 00:09 |
Если в пределах домена, то через аяксный запрос. Если сервера разные, то придется делать прокладку, например, на php, который будет выполнять запрос к стороннему серверу и выдавать данные скрипту.
Ядро аякса:
Код: [развернуть] |
function sendRequest(url,callback,postData) {
var req = createXMLHTTPObject();
if (!req) return;
var method = (postData) ? "POST" : "GET";
req.open(method,url,true);
req.setRequestHeader('User-Agent','XMLHTTP/1.0');
if(postData) req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
req.onreadystatechange = function () {
if (req.readyState != 4) return; // Not yet
if (req.status != 200 && req.status != 304) return; // HTTP Error
callback(req);
}
if (req.readyState == 4) return;
req.send(postData);
}
var XMLHttpFactories = [
function () {return new XMLHttpRequest()},
function () {return new ActiveXObject("Msxml2.XMLHTTP.6.0")},
function () {return new ActiveXObject("Msxml2.XMLHTTP.3.0")},
function () {return new ActiveXObject("Msxml2.XMLHTTP")},
function () {return new ActiveXObject("Msxml3.XMLHTTP")},
function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];
function createXMLHTTPObject() {
var xmlhttp = false;
for (var i=0;i<XMLHttpFactories.length;i++) {
try { xmlhttp = XMLHttpFactories[i](); }
catch (e) { continue; }
break;
}
return xmlhttp;
}
|
Пример использования:
Код: [развернуть] |
// Обработчик загрузки:
function myhandler(q) {
if(typeof(q.responseText)!='undefined') {
// alert(q.responseText);
document.getElementById('YourBannerLayerID').innerHTML = q.responseText;
}
}
// Выполнить запрос:
sendRequest('/ajax.php?args='+args,myhandler);
|
Код php-прокладки ajax.php:
Код: [развернуть] |
<?php
if(empty($_GET['args'])) die('Wrong usage');
echo file_get_contents('http://host.tld/bannersystem?args='.$_GET['args']);
?>
|
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 08/02/11 в 02:07 |
В пределах домена, оценил, щас буду пробовать.
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 08/02/11 в 02:22 |
чтот не понял, а возращать адрес где должна страница
<body>http://url.gif</body> - так?
или в заголовке "Location"
|
|
|
|
В чем сила, БРАТ?
С нами с 22.03.05
Сообщения: 749
Рейтинг: 246
|
Добавлено: 08/02/11 в 02:39 |
все разобрался работает
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |