Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Мал. задачка по JavaScript
Новая тема
Ответить
цитата
11/09/10 в 02:00
clever
В JavaScript'e я не силен, а изучу его только через месяц, но нужно реализовать следующее.
Есть две страницы: index.html и part.php. Нужно, чтобы в определенном месте index.html появилась выдача страница part.php. Какой код в то место страницы index.html вставить?
Помогите, плиз.
цитата
11/09/10 в 02:35
LeadFarmer
яваскрипт тут не к месту - достаточно ssi выполнить
<!--#include file="part.php" -->
(
http://ru.wikipedia.org/wiki/SSI_(программирование)
)
цитата
11/09/10 в 02:39
clever
Дело в том, что страница всегда должна быть статичной. Не смотря на то, что part.php всегда возвращает разные данные, сама страница, которая их отображает - всегда статична. Поэтому ssi тут не подойдет - он изменяет код страницы.
цитата
11/09/10 в 03:57
EllGree
Код:
<html>
<script>
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;
}
PartHandler = function(q) {
if(typeof(q.responseText)!='undefined')
document.getElementById('part_div').innerHTML=q.responseText;
}
window.onload = function() { sendRequest('/part.php',PartHandler); }
</script>
<body>
Some text
<div id="part_div">loading content...</div>
Some text
</body>
</html>
цитата
11/09/10 в 13:32
clever
Не работает код
цитата
11/09/10 в 13:43
artursn
тебе надо или не надо передавать параметры на вторую страницу? если не надо не вижу проблемы кто мешает индексу быть статическим при SSI
цитата
11/09/10 в 13:55
LeadFarmer
код вверху рабочий - ты или пути перепутал для пхп файла, либо запускаешь не с http пути, а с локалки, либо у тебя js отключен
а вообще если собираешься учить js чтобы применять на практике - забудь про чистый js и сразу старайся писать на фреймворках - благо хороших их предостаточно - это и jQuery, и Dojo.
вот код на jQ - все лаконично и читаемо
<html>
<head>
<script type="text/javascript" src="./jquery-1.4.2.min.js"></script>
<script>
$(document).ready(function() {
$('#part_div').load('./part.php')
});
</script>
</head>
<body>
Some text
<div id="part_div">loading content...</div>
Some text
</body>
</html>
не забудь разве что скачать последнюю версию - jquery-1.4.2.min.js - и положить в тот же каталлог )
цитата
11/09/10 в 14:17
lega_cobra
И как с портабельностью у данного вида строчек?
Код:
function () {return new ActiveXObject("Microsoft.XMLHTTP")}
цитата
11/09/10 в 16:24
EllGree
lega_cobra писал:
И как с портабельностью у данного вида строчек?
Код:
function () {return new ActiveXObject("Microsoft.XMLHTTP")}
98% браузеров отработают по ветке XMLHttpRequest, а эта строчка стоит последней в массиве, чтобы охватить наиболее древние msie, способные выполнить http-запрос из js при помощи объекта ActiveX.
цитата
11/09/10 в 16:35
EllGree
clever писал:
Не работает код
Не проверял перед отправкой, подумал, наверное где-то нахомутал.
Но нет, все ок.
См.
http://yaklyushin.com/test.php
Все работает
цитата
11/09/10 в 19:19
clever
В строке
Код:
window.onload = function() { sendRequest('/part.php',PartHandler);
заменил
/part.php
на
./part.php
и заработало! Спасибо!
цитата
11/09/10 в 23:35
EllGree
clever писал:
В строке
Код:
window.onload = function() { sendRequest('/part.php',PartHandler);
заменил
/part.php
на
./part.php
и заработало! Спасибо!
Понятно. Не за что. Удачи.
цитата
12/09/10 в 10:01
sydoow
А подскажите как код будет выглядить, если нужно будет вставить не part.php а целую страницу, например
http://ya.ru/
Условие такое, что всё должно быть на ява скрипте. Такое вообще возможно без фреймов?
цитата
12/09/10 в 22:52
EllGree
Нет. Запросы из js выполняются в пределах текущего хоста. Остальное блокируется.
цитата
13/09/10 в 02:50
Noobus Boobus
http://chebykin.livejournal.com/33598.html
Вот так еще некоторые делают.
цитата
13/09/10 в 06:49
sydoow
А может как то с помощью аякса и модального окна это можно реализовать?
цитата
16/09/10 в 11:38
clever
Как можно расширить скрипт, чтобы из одного файла .php загружалист данные в один тэг страницы, а из другого файла .php - в другой тэг.
part1.php -> <div id="p1"></div>
part2.php -> <div id="p2"></div>
цитата
16/09/10 в 12:00
LeadFarmer
clever писал:
Как можно расширить скрипт, чтобы из одного файла .php загружалист данные в один тэг страницы, а из другого файла .php - в другой тэг.
part1.php -> <div id="p1"></div>
part2.php -> <div id="p2"></div>
на jq элементарно
<html>
<head>
<script type="text/javascript" src="./jquery-1.4.2.min.js"></script>
<script>
$(document).ready(function() {
$('#p1').load('./part1.php')
$('#p2').load('./part2.php')
});
</script>
</head>
<body>
Some text
<div id="p1">loading content...</div> <br>
<div id="p2">loading content...</div> <br>
Some text
</body>
</html>
Новая тема
Ответить
Эта страница в полной версии