-
Давайте сразу, я в курсе, что по определению такое низя. Но, порой очень хочется. Может у кого есть какие идеи. Конкретной задачи нет, просто хотелось бы обсудить пути обхода этого тупика. Вопросы а зачем это надо, прошу не писать. Считайте, что это тренировка для спецов.
Значит я использовал вот какую схему. :
index.htm
Два фрейма:
Один на 100%, второй скрытый. Ес-но сначала грузится страница, с фреймами, но вся фишка в том, что тот, который мы видим пустой. В скрытый фрейм грузится страница, которая при помощи JavaScript делает, что нужно, и затем с этими данными запускает скрипт на странице index.htm, которые уже в видимую часть грузит страницу view.php передав ей данные. И далее уже сайт работает с нужными данными.
Еще был вариант с использованием cookie. Данные из javascript помещались в куки, но это обычно. Может кто интересовался такими решениями. Прошу мысли [Only registered and activated users can see links. Click Here To Register...]
-
Можно по простому, через GET.
Я правильно понял, что в скрытом фрейме путём некого скрипта ты получаешь
X=1 или X=2. И тебе нужно перегнать этот X в $X в большом фрейме?
Если да, то тогда в невидимом фрэйме
<script>
bigframe.location.href=('view.php?X='+X);
</script>
Ну и потом берёшь эту $X и делаешь с ней что хочешь...
Или тебя не устраивает GET и охото чтобы всё было тайно [Only registered and activated users can see links. Click Here To Register...]
-
По хорошему можно и тайно. Это же как пример. Именно таким образом в данном случае и поступаю.
Тут набрел на вариант интересный.
Значит грузится страница,
если первый раз, то выдаётся JavaScript который собирает инфу, помещает в куки и снова
перегружается. location.href типа ... Далее PHP скрипт поняв, что мы уже отработали удаляет куки
и нужные работае с уже нужными переменными. Короче такая вот замута. Главное, чтобы юзер не понял, что происходит ... как Вам вариант ? [Only registered and activated users can see links. Click Here To Register...]
-
Когда я столкнулся с такой же проблемой, то решение получилось абсолютно таким же как и у mymind. Два фрейма, один невидимый, главный фрейм в javascript браузера запускает в невидимом сгенерированную динамически ссылку с нужными параметрами. В невидимом фрейме php как-то крутит поданные в ссылке данные и записывает результат. Первый же минус – необходимость отслеживания главным фреймом невидимого на предмет загрузки. Т.е. запускаешь ссылку, устанавливаешь функцию-таймер, которая будет проверять, а не загрузился ли документ в невидимый фрейм? И убедившись, что документ загружен, эта функция-таймер должна вызвать функцию-терминатор вызвавшей же ее функции. Уже ясно, что немного мутновато. Это все удобно в VC или Builder (Delphi), но не красиво в примитивных –script. Но все прекрасно работало и на различных браузерах.
Смысл второго варианта с куками не совсем понимаю. Ведь если перегружается вся страница – понтофф динамичности тогда? Тут тогда вообще можно обходиться без javascript, а просто post’ом вызывать тот же скрипт, но с другими параметрами. Вы, mymind, не хотите говорить о цели такого метода, но пожалуй стоит. В моем случае вся идея была заставить работать редактор табличных данных без единой перегрузки страницы. Правишь ли, удаляешь, добавляешь данные или переходишь вперед, страница не перегружается, а в невидимый фрейм загоняются только необходимые данные, которые javascript в нужных местах и отображает. Вот даже тестовый пример остался: [Only registered and activated users can see links. Click Here To Register...] (в firefox не работает, знаю почему, но исправлять ессенно уже ничего не буду – это была тестовая работа, которая свою роль уже отыграла).
Новые решения. А пожалуй особо лучших и нет. mymind, может Вы знаете, есть ли в javascript функция на подобие php’шной file_get_contents('someurl or file')? Если есть, то можно избежать невидимых фреймов и функций-таймеров. Таким файл-гетом берем результат выполнения php скрипта и делаем простой лексический разбор. Плюс экономия трафика, ведь если раньше скрипт генерил html на подобии:
<input type=”hidden” id=”result_value_1” value=”value1”>
<input type=”hidden” id=”result_value_2” value=”value2”>
то теперь будет что-то вроде:
result_value_1=value1
result_value_2=value2
А разобрать в javascript не проблема – все что до знака «=» - имя переменной, после – значение. Можно еще как-то придумать. В идеале конечно эти данные должны приходить в виде xml и разбираться так же стандартными методами. Но почти уверен, что в javascript нет парсера xml. Я не писал конкретных примеров, т.к. делал такое на php, но не на javascript. Видимо, для мощной реализации обмена данными на стороне клиента нужно более мощное решение, а-ля Java или ASP (VC, VB), ибо возможности php+javascript не так велики.
Хотя если все же Вы найдете интересное решение, опишите его здесь, плиз, вполне может пригодиться.
-
Интересные мысли, что касается file_get_contents('someurl or file')? то PHP скрипт легко может сгенарировать и итоговый js скрипт. Который мы просто <script src=generate.js language=javascript></script>
-
Вот интересная [Only registered and activated users can see links. Click Here To Register...] по теме. Час копался, пока нашел что-то в этом духе. Там даже примерчик небольшой, показывающий как раз то, что нам надо. Упрощенный скрипт:
<html><body>
<textarea id="tt" cols="100" rows="40"></textarea>
<script language="JavaScript">
<!--
var url="http://mysite.loc";
var xrequest=new ActiveXObject("Microsoft.XMLHTTP"); //var xrequest=new XMLHttpRequest(); for not IE
xrequest.onreadystatechange = processReqChange;
xrequest.open("GET",url,false);
xrequest.send(); //xrequest.send(""); for not IE
function processReqChange() {
// только при состоянии "complete"
if (xrequest.readyState == 4) {
// для статуса "OK"
if (xrequest.status == 200) {
// здесь идут всякие штуки с полученным ответом
var result=xrequest.responseText;
document.getElementById('tt').value=result ;
} else {
alert("Не удалось получить данные:\n" +
xrequest.statusText);
}
}
}
//-->
</script>
</body></html>
Получается, что я смог получить данные только с локального сайта, все внешние возвращали пустую строку. Но если все же нам нужны будут внешние данные, то хитрим - делаем скрипт на php, который будет брать внешние данные и возвращать их в наш локальный javascript. Он же может сразу и парсить внешний xml, возвращая нам простую строку в виде значений переменных через точку с запятой или готовый массив, как на примере в статье. Вообще - правильная статья.
По-моему красивое решение, а главное достаточно универсальное!
P.S. неудобно, что для каждого браузера по разному надо писать команды, т.е. учитывать какой у юзера браузер, делать проверки, много лишних строк. А строки в javascript - трафик пользователя, что критично. А в Opera у меня вообще не заработало.
-
я конечно топик не читал, но в сторону AJAX не пробывали копать, или я не правильно понял?
-
Оу, вот это вещь. Навскидку, вроде неплохая идея. Скажем для сайта, конечно не очень, а вот для чатов само-то. Причем скорость таких чатов будет более чем высока.
-
Цитата:
Originally posted by mymind@Sep 27 2005, 11:33
Оу, вот это вещь. Навскидку, вроде неплохая идея. Скажем для сайта, конечно не очень, а вот для чатов само-то. Причем скорость таких чатов будет более чем высока.
<div align='right'>[Only registered and activated users can see links. Click Here To Register...]
[/quote]
Для чата да, но и для серьезной вэб-системы. Предположим у нас тот же инет-магазин или прочие посты/объявления. Пользователь меняет какие-то парамерты и без перезагрузки страницы соответствующие поля изменяются. При это м в чем минус был отдельного фрейма - однозадачность. Дал запрос, жди пока не загрузится результат. Тут же уже что-то вроде объекта, поэтому если запросы не пересекаются, пользователь может в одном поле что-то изменить (там замигает например красная лампочка, типа загрузка пошла), в это время меняет второе, там тоже пошел запрос. Ляпота. И сидишь в такой вэб-системе как в exe-приложении. А то иногда эти перегружаемые сраницы сильно раздражают, особенно если инет медленный, чуть что изменил - потянулись все банеры грузиться.
Единственное что - такую систему долго писать, т.е. все эти поля на javascript, каждому обработчик, много времени. Но если система стоит того, то, думаю, вполне реально.
-
Гы, прикольно. Пару минут назад по работе возникла необходимость создания такой системы, т.е. загрузки данных без обновления основной страницы. Вот не зря разбирался [Only registered and activated users can see links. Click Here To Register...]
Думаю, логично, чтоб выкачиваемый ответ скрипта php выдавал сразу сформированный html, а javascript просто будет вставлять его в нужное место. Дабы поменьше обработки было на javascript (экономия трафика). Когда что-то получится - расскажу [Only registered and activated users can see links. Click Here To Register...]
Вот что-то вроде [Only registered and activated users can see links. Click Here To Register...] (справа при выборе страны/области/города). Но тут они просто сделали через <iframe>, а я же ессенно хочу извратиться [Only registered and activated users can see links. Click Here To Register...]