show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 11/09/10 в 02:00 |
В JavaScript'e я не силен, а изучу его только через месяц, но нужно реализовать следующее.
Есть две страницы: index.html и part.php. Нужно, чтобы в определенном месте index.html появилась выдача страница part.php. Какой код в то место страницы index.html вставить?
Помогите, плиз.
|
|
|
|
С нами с 31.05.10
Сообщения: 1991
Рейтинг: 487
|
Добавлено: 11/09/10 в 02:35 |
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 11/09/10 в 02:39 |
Дело в том, что страница всегда должна быть статичной. Не смотря на то, что part.php всегда возвращает разные данные, сама страница, которая их отображает - всегда статична. Поэтому ssi тут не подойдет - он изменяет код страницы.
|
|
|
|
С нами с 19.07.05
Сообщения: 318
Рейтинг: 401
|
Добавлено: 11/09/10 в 03:57 |
Код: |
<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>
|
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 11/09/10 в 13:32 |
Не работает код
|
|
|
|
С нами с 28.07.07
Сообщения: 425
Рейтинг: 375
|
Добавлено: 11/09/10 в 13:43 |
тебе надо или не надо передавать параметры на вторую страницу? если не надо не вижу проблемы кто мешает индексу быть статическим при SSI
|
|
|
|
С нами с 31.05.10
Сообщения: 1991
Рейтинг: 487
|
Добавлено: 11/09/10 в 13:55 |
код вверху рабочий - ты или пути перепутал для пхп файла, либо запускаешь не с 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 - и положить в тот же каталлог )
|
|
|
|
С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144
|
Добавлено: 11/09/10 в 14:17 |
И как с портабельностью у данного вида строчек?
Код: | function () {return new ActiveXObject("Microsoft.XMLHTTP")} |
|
|
|
|
С нами с 19.07.05
Сообщения: 318
Рейтинг: 401
|
Добавлено: 11/09/10 в 16:24 |
lega_cobra писал: | И как с портабельностью у данного вида строчек?
Код: | function () {return new ActiveXObject("Microsoft.XMLHTTP")} | |
98% браузеров отработают по ветке XMLHttpRequest, а эта строчка стоит последней в массиве, чтобы охватить наиболее древние msie, способные выполнить http-запрос из js при помощи объекта ActiveX.
|
|
|
|
С нами с 19.07.05
Сообщения: 318
Рейтинг: 401
|
Добавлено: 11/09/10 в 16:35 |
clever писал: | Не работает код |
Не проверял перед отправкой, подумал, наверное где-то нахомутал.
Но нет, все ок.
См. http://yaklyushin.com/test.php
Все работает
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 11/09/10 в 19:19 |
В строке Код: | window.onload = function() { sendRequest('/part.php',PartHandler); |
заменил /part.php на ./part.php и заработало! Спасибо!
|
|
|
|
С нами с 19.07.05
Сообщения: 318
Рейтинг: 401
|
Добавлено: 11/09/10 в 23:35 |
clever писал: | В строке Код: | window.onload = function() { sendRequest('/part.php',PartHandler); | заменил /part.php на ./part.php и заработало! Спасибо! |
Понятно. Не за что. Удачи.
|
|
|
|
С нами с 18.05.07
Сообщения: 8329
Рейтинг: 4007
|
Добавлено: 12/09/10 в 10:01 |
А подскажите как код будет выглядить, если нужно будет вставить не part.php а целую страницу, например http://ya.ru/
Условие такое, что всё должно быть на ява скрипте. Такое вообще возможно без фреймов?
|
|
|
|
С нами с 19.07.05
Сообщения: 318
Рейтинг: 401
|
Добавлено: 12/09/10 в 22:52 |
Нет. Запросы из js выполняются в пределах текущего хоста. Остальное блокируется.
|
|
|
|
С нами с 16.10.09
Сообщения: 343
Рейтинг: 419
|
Добавлено: 13/09/10 в 02:50 |
|
|
|
|
С нами с 18.05.07
Сообщения: 8329
Рейтинг: 4007
|
Добавлено: 13/09/10 в 06:49 |
А может как то с помощью аякса и модального окна это можно реализовать?
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 16/09/10 в 11:38 |
Как можно расширить скрипт, чтобы из одного файла .php загружалист данные в один тэг страницы, а из другого файла .php - в другой тэг.
part1.php -> <div id="p1"></div>
part2.php -> <div id="p2"></div>
|
|
|
|
С нами с 31.05.10
Сообщения: 1991
Рейтинг: 487
|
Добавлено: 16/09/10 в 12:00 |
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>
|
|
|
|
|