Показано с 1 по 10 из 10

Тема: Передача данных из JavaScript в PHP

  1. #1

    Регистрация
    30.06.2004
    Адрес
    Ангарск
    Сообщений
    245

    Хорошо

    Давайте сразу, я в курсе, что по определению такое низя. Но, порой очень хочется. Может у кого есть какие идеи. Конкретной задачи нет, просто хотелось бы обсудить пути обхода этого тупика. Вопросы а зачем это надо, прошу не писать. Считайте, что это тренировка для спецов.

    Значит я использовал вот какую схему. :
    index.htm
    Два фрейма:
    Один на 100%, второй скрытый. Ес-но сначала грузится страница, с фреймами, но вся фишка в том, что тот, который мы видим пустой. В скрытый фрейм грузится страница, которая при помощи JavaScript делает, что нужно, и затем с этими данными запускает скрипт на странице index.htm, которые уже в видимую часть грузит страницу view.php передав ей данные. И далее уже сайт работает с нужными данными.

    Еще был вариант с использованием cookie. Данные из javascript помещались в куки, но это обычно. Может кто интересовался такими решениями. Прошу мысли

  2. #2

    Регистрация
    01.07.2005
    Сообщений
    11
    Можно по простому, через GET.

    Я правильно понял, что в скрытом фрейме путём некого скрипта ты получаешь
    X=1 или X=2. И тебе нужно перегнать этот X в $X в большом фрейме?

    Если да, то тогда в невидимом фрэйме
    <script>
    bigframe.location.href=(&#39;view.php?X=&#39;+X);
    </script>

    Ну и потом берёшь эту $X и делаешь с ней что хочешь...

    Или тебя не устраивает GET и охото чтобы всё было тайно

  3. #3

    Регистрация
    30.06.2004
    Адрес
    Ангарск
    Сообщений
    245
    По хорошему можно и тайно. Это же как пример. Именно таким образом в данном случае и поступаю.

    Тут набрел на вариант интересный.
    Значит грузится страница,
    если первый раз, то выдаётся JavaScript который собирает инфу, помещает в куки и снова
    перегружается. location.href типа ... Далее PHP скрипт поняв, что мы уже отработали удаляет куки
    и нужные работае с уже нужными переменными. Короче такая вот замута. Главное, чтобы юзер не понял, что происходит ... как Вам вариант ?

  4. #4

    Регистрация
    26.09.2005
    Адрес
    Одесса
    Сообщений
    5
    Когда я столкнулся с такой же проблемой, то решение получилось абсолютно таким же как и у mymind. Два фрейма, один невидимый, главный фрейм в javascript браузера запускает в невидимом сгенерированную динамически ссылку с нужными параметрами. В невидимом фрейме php как-то крутит поданные в ссылке данные и записывает результат. Первый же минус – необходимость отслеживания главным фреймом невидимого на предмет загрузки. Т.е. запускаешь ссылку, устанавливаешь функцию-таймер, которая будет проверять, а не загрузился ли документ в невидимый фрейм? И убедившись, что документ загружен, эта функция-таймер должна вызвать функцию-терминатор вызвавшей же ее функции. Уже ясно, что немного мутновато. Это все удобно в VC или Builder (Delphi), но не красиво в примитивных –script. Но все прекрасно работало и на различных браузерах.

    Смысл второго варианта с куками не совсем понимаю. Ведь если перегружается вся страница – понтофф динамичности тогда? Тут тогда вообще можно обходиться без javascript, а просто post’ом вызывать тот же скрипт, но с другими параметрами. Вы, mymind, не хотите говорить о цели такого метода, но пожалуй стоит. В моем случае вся идея была заставить работать редактор табличных данных без единой перегрузки страницы. Правишь ли, удаляешь, добавляешь данные или переходишь вперед, страница не перегружается, а в невидимый фрейм загоняются только необходимые данные, которые javascript в нужных местах и отображает. Вот даже тестовый пример остался: [Только зарегистрированные пользователи могут видеть ссылки. ] (в firefox не работает, знаю почему, но исправлять ессенно уже ничего не буду – это была тестовая работа, которая свою роль уже отыграла).

    Новые решения. А пожалуй особо лучших и нет. mymind, может Вы знаете, есть ли в javascript функция на подобие php’шной file_get_contents(&#39;someurl or file&#39? Если есть, то можно избежать невидимых фреймов и функций-таймеров. Таким файл-гетом берем результат выполнения 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 не так велики.

    Хотя если все же Вы найдете интересное решение, опишите его здесь, плиз, вполне может пригодиться.

  5. #5

    Регистрация
    30.06.2004
    Адрес
    Ангарск
    Сообщений
    245
    Интересные мысли, что касается file_get_contents(&#39;someurl or file&#39? то PHP скрипт легко может сгенарировать и итоговый js скрипт. Который мы просто <script src=generate.js language=javascript></script>

  6. #6

    Регистрация
    26.09.2005
    Адрес
    Одесса
    Сообщений
    5
    Вот интересная [Только зарегистрированные пользователи могут видеть ссылки. ] по теме. Час копался, пока нашел что-то в этом духе. Там даже примерчик небольшой, показывающий как раз то, что нам надо. Упрощенный скрипт:


    <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(&#39;tt&#39.value=result;
    } else {
    alert("Не удалось получить данные:\n" +
    xrequest.statusText);
    }
    }
    }
    //-->
    </script>

    </body></html>


    Получается, что я смог получить данные только с локального сайта, все внешние возвращали пустую строку. Но если все же нам нужны будут внешние данные, то хитрим - делаем скрипт на php, который будет брать внешние данные и возвращать их в наш локальный javascript. Он же может сразу и парсить внешний xml, возвращая нам простую строку в виде значений переменных через точку с запятой или готовый массив, как на примере в статье. Вообще - правильная статья.

    По-моему красивое решение, а главное достаточно универсальное!

    P.S. неудобно, что для каждого браузера по разному надо писать команды, т.е. учитывать какой у юзера браузер, делать проверки, много лишних строк. А строки в javascript - трафик пользователя, что критично. А в Opera у меня вообще не заработало.

  7. #7

    Регистрация
    05.11.2003
    Адрес
    Москва
    Сообщений
    2,087
    я конечно топик не читал, но в сторону AJAX не пробывали копать, или я не правильно понял?

  8. #8

    Регистрация
    30.06.2004
    Адрес
    Ангарск
    Сообщений
    245
    Оу, вот это вещь. Навскидку, вроде неплохая идея. Скажем для сайта, конечно не очень, а вот для чатов само-то. Причем скорость таких чатов будет более чем высока.

  9. #9

    Регистрация
    26.09.2005
    Адрес
    Одесса
    Сообщений
    5
    Originally posted by mymind@Sep 27 2005, 11:33
    Оу, вот это вещь. Навскидку, вроде неплохая идея. Скажем для сайта, конечно не очень, а вот для чатов само-то. Причем скорость таких чатов будет более чем высока.
    <div align='right'>[Только зарегистрированные пользователи могут видеть ссылки. ]
    [/quote]

    Для чата да, но и для серьезной вэб-системы. Предположим у нас тот же инет-магазин или прочие посты/объявления. Пользователь меняет какие-то парамерты и без перезагрузки страницы соответствующие поля изменяются. При это м в чем минус был отдельного фрейма - однозадачность. Дал запрос, жди пока не загрузится результат. Тут же уже что-то вроде объекта, поэтому если запросы не пересекаются, пользователь может в одном поле что-то изменить (там замигает например красная лампочка, типа загрузка пошла), в это время меняет второе, там тоже пошел запрос. Ляпота. И сидишь в такой вэб-системе как в exe-приложении. А то иногда эти перегружаемые сраницы сильно раздражают, особенно если инет медленный, чуть что изменил - потянулись все банеры грузиться.

    Единственное что - такую систему долго писать, т.е. все эти поля на javascript, каждому обработчик, много времени. Но если система стоит того, то, думаю, вполне реально.

  10. #10

    Регистрация
    26.09.2005
    Адрес
    Одесса
    Сообщений
    5
    Гы, прикольно. Пару минут назад по работе возникла необходимость создания такой системы, т.е. загрузки данных без обновления основной страницы. Вот не зря разбирался

    Думаю, логично, чтоб выкачиваемый ответ скрипта php выдавал сразу сформированный html, а javascript просто будет вставлять его в нужное место. Дабы поменьше обработки было на javascript (экономия трафика). Когда что-то получится - расскажу

    Вот что-то вроде [Только зарегистрированные пользователи могут видеть ссылки. ] (справа при выборе страны/области/города). Но тут они просто сделали через <iframe>, а я же ессенно хочу извратиться

Похожие темы

  1. Упорядочивание CSS данных
    от Zigzag в разделе Вёрстка сайта
    Ответов: 7
    Последнее сообщение: 23.10.2006, 03:26
  2. Передача параметров из *.txt в *.swf
    от Dart в разделе Flash-технологии
    Ответов: 10
    Последнее сообщение: 05.12.2005, 23:24
  3. передача из формы во фрейм
    от pitbuly в разделе Веб-программирование
    Ответов: 1
    Последнее сообщение: 26.07.2005, 06:19
  4. Передача данных
    от kyiv_zip в разделе Растровая графика
    Ответов: 4
    Последнее сообщение: 23.03.2005, 14:16
  5. Безопасность данных. Q-A
    от SaneK в разделе Софт и железо
    Ответов: 14
    Последнее сообщение: 06.03.2004, 17:59

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •