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
Не работает код icon_sad.gif
цитата
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 писал:
Не работает код icon_sad.gif

Не проверял перед отправкой, подумал, наверное где-то нахомутал.
Но нет, все ок.
См. 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>


Эта страница в полной версии