Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Javascript + php, вопрос скорее по первому   Найти похожие ветки 

 
Zeqfreed ©   (2006-05-31 17:39) [0]

Приходится сейчас писать для веба. В результате моих изысканий я написал вот такой скриптик, иллюстрирующий мой подход к этому делу:

test.php:
<?
if (isset($_GET["get"])) {
 print "ShowText("hello");";
} else {
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Тестовый скрипт</title>
<script>
function ShowText(text)
{
document.getElementById("a").value = unescape(text);
}

function AddScript(get)
{
var
 s = document.getElementsByTagName("script")[1];
 s.src = "test.php?get=" + get;
}
</script>
<script>
</script>
</head>
<body>
<form>
<textarea id="a" cols="70" rows="20"></textarea><br>
<input onClick="javascript: AddScript();" type="button" name="submit" value="Загрузить" />
</form>
</body>
</html>
<? } ?>


Данный скрипт работает. Но в реальном проекте такая же схема сбоит. Отсюда делаю вывод, что либо я опять где-то что-то недосмотрел, либо схема не очень-то и стабильная.
В общем задача у меня — динамическое обновление страницы без перезагрузки оной. А вопрос в том, как бы это все покорректней реализовать, т.к. чувствую, что сейчас у меня полная чушь написана.
Буду признателен за любые подсказки, только прошу меня не посылать изучать исходники AJAX Framework"ов.


 
Calm ©   (2006-05-31 17:57) [1]


> В общем задача у меня — динамическое обновление страницы
> без перезагрузки оной.

Что-то типа "взболтать, но не перемешивать". Надо бы пояснить.
Без разъяснений целей и проблем разгадывать исходник неохота, на работе таких ребусов хватает :)


 
Zeqfreed ©   (2006-05-31 18:01) [2]

Ну приведенный скрипт хорошо иллюстрирует мою задачу. При нажатии на кнопку в текстовое поле загружается текст, полученный в результате работы скрипта (в данном случае этого же, в общем случае — любого). Проблема заключается в том, как вызывается этот скрипт и получаются данные от него. Мне кажется, что сейчас это реализовано неверно. Спрашиваю, может кто подскажет более корректный вариант. Хотя сейчас я потестировал, вроде работает. Если предложений по улучшению не будет, придется оставить такой вариант.

Попутный вопрос, в php нет ф-ции аналогичной escape в javascript? (а я тем временем погляжу на php.net)


 
palva ©   (2006-05-31 18:38) [3]

Корректно реализуется через XML. Страница получает дополнительные данные в объект MSXML и рассовывает их по странице.


 
vidiv ©   (2006-06-01 03:16) [4]

можно делать скрытый IFrame и в него грузить чисто скрипт.


> palva ©   (31.05.06 18:38) [3]

Можно по подробнее?


 
TButton ©   (2006-06-01 06:12) [5]

фигня какая-то
имхо, с iFrame"ом действительно будет проще и понятнее
тем более что iframe - единственный в (D)HTML контейнер позволяющий что-то в себя загружать без перезагрузки страницы


 
Zeqfreed ©   (2006-06-01 07:29) [6]

Я уже отладил свой скрипт с использованием информации из разных интернет-источников (например, http://www.dklab.ru/lib/Subsys_JsHttpRequest/), теперь работает в Опере, Фаерфоксе и ИЕ (тех версий что у меня наличествуют). Кому интересно, привожу код, демонстрирующий саму методику:

test.php:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<script language="javascript">
function getObject(name) //(C) Yanis Prasol aka Gero
{
 var obj
 if (document.all)
   obj=document.all[name]
 else
 {
   obj=document.getElementById(name)
   if (!obj)
     obj=document.getElementsByName(name)[0]
   if (document.getElementsByName(name).length>1)
     obj=document.getElementsByName(name)
 }
 return obj
}

function displayData(a)
{
alert(a);
}

function loadRemoteData()
{
 var sd = getObject("scriptdiv");
  sd.innerHTML = "hello<s" + "cript></" + "script>";
 
 var s = sd.getElementsByTagName("script")[0];
  s.language = "JavaScript";
 
 var str = getObject("myform").text.value;
 var href = "getdata.php?in=" + str;
 
 if (s.setAttribute)
  s.setAttribute("src", href);
 else
  s.src = href;
}
</script>
</head>
<body>
<div id="scriptdiv" style="display: none"></div>
<form id="myform">
<input name="text" type="text" value="" />
<input type="button" value="Обработать" onClick="loadRemoteData()" />
</form>
</body>
</html>


getdata.php:
<? if (isset($_REQUEST["in"])) { ?>
 displayData("<?=$_REQUEST["in"]?>");  
<? } ?>


Меня, в общем-то, сейчас все устраивает. Хотя, конечно, выглядит это все как какой-то «хак», но ничего особо сложного, на мой взгляд, нет.


 
Zeqfreed ©   (2006-06-01 07:34) [7]

В данный момент пытаюсь разобраться с mod_rewrite, да что-то все никак не получается :( Нужно то простенькое правило, чтобы перенаправлять все запросы кроме картинок, яваскриптов и каскадны таблиц на один скрипт…



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
2-1149493542
allrussia
2006-06-05 11:45
2006.06.25
Организовать в проекте скачивание файлов по принципу работы Reget


15-1148882300
Vlad Oshin
2006-05-29 09:58
2006.06.25
Удалить файл командной строкой по дате/размеру?


2-1149588259
D@Nger
2006-06-06 14:04
2006.06.25
Ошибка при поиске методом Locate


2-1149695691
mr1Andersen
2006-06-07 19:54
2006.06.25
DBGrid


6-1139919533
guitarist
2006-02-14 15:18
2006.06.25
При выходе в интернет, представляться IE