Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача значений переменных из Javascript в PHP 
:(
    Опции темы
TetraHC
  Дата 8.6.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



Всем добрый день! Пишу сайтик http://cabel.skrovla.ru

Одним из условия заказчика, было реализовать строку подсказки поиска - введите например букву "а" (русскую) в поле поиска кабеля, и вылезет подсказка.
Собсвенно элемент позиционирован как:

position:absolute

Так вот дело в том, что в зависимости от экрана браузера координаты поля ввода меняются. Из можно определить ТОЛЬКО через JAVASCRIPT, что я с успехом делаю. Но вот далее, надо вывести css файл с этими координатами (я делаю это на php), и вот тут вопрос - как передать значения left и top в php? Вариант через GET не прокатит, так как адреса у страницы php нет - это МОДУЛЬ JOOMLA.

Вопрос  - как быть? Код:

Код

<?php

//ОПРЕДЕЛЕНИЕ ПОЛЬЗОВАТЕЛЯ

$user =&JFactory::getUser();
$usertype=$user->get('usertype');
if(($usertype=='Manager') or ($usertype=='Administrator') or ($usertype=='Super Administrator')){
$manager=1;
}
else{
$manager=0;
}
?>


//ОПРЕДЕЛЯЕМ РАЗМЕР ЭКРАНА
<script type="text/javascript">
function getElementPosition(elemId)
{
   var elem = document.getElementById(elemId);

   var w = elem.offsetWidth;
   var h = elem.offsetHeight;

   var l = 0;
   var t = 0;

   while (elem)
   {
       l += elem.offsetLeft;
       t += elem.offsetTop;
       elem = elem.offsetParent;
   }

   return {"left":l, "top":t, "width": w, "height":h};
}

<script language="JavaScript" type="text/javascript" src="./suggest/clienthint.js"></script>

    <div align="center">
<br>
            <form action="./index.php?option=com_hello&view=hello&task=search" name="myform" method="post">
                <input type=radio name="answer" value="1" checked>поиск везде  
                <input type=radio name="answer" value="2">поиск в новом  
                <input type=radio name="answer" value="3">поиск в госрезерве<br><br>
                <input type="text" name="mytext" size="40" id="txt4" onkeyup="showHint(this.value)" autocomplete="off">
                <input name="Submit" type=submit value="Искать">
                <br>
                <br>
                <div id="txtHint" align="center" style="width: 263px; height: 0px;"></div>
            </form>
        </div>
</body>
pos = getElementPosition("txt4");
var left = pos.left; 
var top = pos.top;
var width = pos.width;
var height = pos.height;
var x0=left;
var y0=top+height;
document.write(
"Угол левый x0-" + x0 + "[px] y0-" + y0 + "[px] ширина" + width + "[px]  Начальные данные top-" + top + " height-" + height + "."
);
<style type="text/css" media="screen">        
    }
    #txtHint {
        position: absolute;
        <?php
            if($manager!=1){
                echo "left: 719px;";
                echo "top: 316px;";
            }
            else{
                echo "left: 719px;";
                echo "top: 546px;";
            }
        ?>
        background-color: #FFFFFF; 
        text-align: left; 
        border: 1px solid #000000;
    }
</style>

Примечание - строка "<script language="JavaScript" type="text/javascript" src="./suggest/clienthint.js"></script>" отношения к делу не имеет, это javascript для передачи данных технологией AJAX

Собсвтенно на JAVA мы определяем postion left и top, и надо их вставить вместо текущий фиксированных позиций ( 719px, 316px  для обычного юзера и 719px и 546px для менеджера).

PS Есть вариант отказатся от php и сделать вывод только методом JAVSACSRIPT (documet.write), но я так и смог заставить document.write выводить html код в тело страницы (хотел делать вставки кода типа <input name="name" value="width" type=hidden>
PM MAIL   Вверх
LSD
Дата 8.6.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 1
Всего: 538



И с какого бока тут Java?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
TetraHC
Дата 8.6.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



Цитата(LSD @ 8.6.2009,  14:14)
И с какого бока тут Java?

Если вы про вопрос, то я написал выше - координаты элемента на экране броузера можно определить только на Java
Если вы про место темы, то я видимо перепутал Java и Javascript, извините

Это сообщение отредактировал(а) TetraHC - 8.6.2009, 16:47
PM MAIL   Вверх
bazzjr
Дата 9.6.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 27.12.2007
Где: Россия, Пермь

Репутация: нет
Всего: 6



а не пробовал использовать 

<body onresize="твоя функция()"> или
<body onLoad="твоя функция()">

я совсем не понял почему название темы такое "передача значений переменных из Javascript в PHP"
для чего тебе передавать переменные из явы в пхп?

и зачем использовать document.write?  можно же сделать через innerHTML.

PM MAIL ICQ   Вверх
TetraHC
Дата 9.6.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



Цитата(bazzjr @ 9.6.2009,  12:18)
а не пробовал использовать 

<body onresize="твоя функция()"> или
<body onLoad="твоя функция()">

я совсем не понял почему название темы такое "передача значений переменных из Javascript в PHP"
для чего тебе передавать переменные из явы в пхп?

и зачем использовать document.write?  можно же сделать через innerHTML.

innerHTML позволит мне на Яве в тело html запихнуть что-то типа

<input name="width" type=hidden ... > ?
PM MAIL   Вверх
resurtm
Дата 9.6.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 14.1.2009

Репутация: нет
Всего: 2



— передавать данные из PHP в JS и обратно можно при помощи XmlHttpRequest;
— средствами PHP можно генерировать любой, произвольный JS, CSS, etc. файл с данными из PHP-скрипта (указав соответствующий Content-Type в HTTP-заголовке).

От этого и отталкивайся.

Это сообщение отредактировал(а) resurtm - 9.6.2009, 14:37
PM WWW   Вверх
Aliance
Дата 9.6.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



innerHTML - это W3C-ный аналог устарелого (deprecated) метода document.write. Практически аналог.
Пример использования:
Код

window.onload = function()
{
    document.body.innerHTML = 'тело body';
}

PM MAIL WWW ICQ Skype   Вверх
TetraHC
Дата 9.6.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



Цитата(resurtm @ 9.6.2009,  14:36)
— передавать данные из PHP в JS и обратно можно при помощи XmlHttpRequest;
— средствами PHP можно генерировать любой, произвольный JS, CSS, etc. файл с данными из PHP-скрипта (указав соответствующий Content-Type в HTTP-заголовке).

От этого и отталкивайся.

Да, я знаю, но у меня JS и PHP на одной странице (внутри модуля) :(

Добавлено через 46 секунд
Цитата(Aliance @ 9.6.2009,  14:39)
innerHTML - это W3C-ный аналог устарелого (deprecated) метода document.write. Практически аналог.
Пример использования:
Код

window.onload = function()
{
    document.body.innerHTML = 'тело body';
}

Попробую и отпишу. Всем спасибо за ответы, а вот "репу" поправить вам не смогу - 100 постов не набил :(
PM MAIL   Вверх
TetraHC
Дата 10.6.2009, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



Никак не выходит, я уже отчаялся...

Значит так - есть элемент с id="txt4" (поле ввода input). Есть стиль #txthint с двумя параметрами: position: absolute; left: 300px; top: 600px;

Необходимо на JavaScript в зависимости от ширины экрана пользователя определить положение id="txt4" и тут же изменить параметры left и топ стиля txthint

За рабочий пример 10$ без базара на Яндекс-Деньги
PM MAIL   Вверх
Soah
Дата 10.6.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 8
Всего: 54



Код

<style type="text/css" media="screen">        
    #txt {
        position: absolute;
        top: 100px;
        left: 50px;
    }
</style>
<script type="text/javascript">
    function move() {
        document.getElementById('txt').style.top = '300px';
    }    
</script>

<input type="text" id="txt" />
<input type="button" value="move" onclick="move()" />

примерно, так?
PM MAIL   Вверх
TetraHC
Дата 10.6.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



Я не проверял пока работоспособность твоего скрипта, но сразу говорю - надо без клика, а по загрузке страницы

Если ты готов за 10$ помочь, моя ICQ 209-218-6-восемь-семь, дам Админ доступ к движку чтобы проверить!

Добавлено через 2 минуты и 48 секунд
Есть еще 2 задачи:

Реализовать более искусный поиск чем на сайте (сейчас я ищу по целому слову [введите МГТФ в поиск], а надо мягкий поиск типа МГТФ 3 или МГТФ-3 должны искать МГТФ & 3]) еще +10 $ и еще есть задача по модификации скачки xls с сайта, но это потом
PM MAIL   Вверх
Soah
Дата 10.6.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 8
Всего: 54



Цитата(TetraHC @  10.6.2009,  19:13 Найти цитируемый пост)
но сразу говорю - надо без клика, а по загрузке страницы

так вам же уже ответили http://forum.vingrad.ru/index.php?showtopi...t&p=1891722

Код

<style type="text/css" media="screen">        
    #txtHint {
        position: absolute;
    }
</style>
<script type="text/javascript">
function getElementPosition(elemId) {
    var elem = document.getElementById(elemId);

    var w = elem.offsetWidth;
    var h = elem.offsetHeight;

    var l = 0;
    var t = 0;

    while (elem) {
        l += elem.offsetLeft;
        t += elem.offsetTop;
        elem = elem.offsetParent;
    }

    return {"left":l, "top":t, "width": w, "height":h};
}

window.onload = function() {
    var elem = document.getElementById('txtHint');
    var p = getElementPosition('txtHint');
    
    elem.style.left = p["left"];
    elem.style.top = p["top"];
}

</script>

<div id="txtHint">&nbsp;</div>

PM MAIL   Вверх
TetraHC
Дата 10.6.2009, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



Ну ты все равно на связь выйди, если скрипт заработает куда же я 10$ пошлю?  smile 

ЗЫ Нет аси, мыло [email protected]

Код

<?php

//ОПРЕДЕЛЕНИЕ ПОЛЬЗОВАТЕЛЯ

$user =&JFactory::getUser();
$usertype=$user->get('usertype');
//if($usertype=='Super Administrator'){
//echo "СуперАдмин - Информация о пользователе<br>";
//var_dump($user);
//}
if(($usertype=='Manager') or ($usertype=='Administrator') or ($usertype=='Super Administrator')){
$manager=1;
}
else{
$manager=0;
}
//if($manager==1)echo "<b>Вы - менеджер!</b><br>";
$username=$user->get('name');
$usermail=$user->get('email');
//echo "<center><b>Заявку формирует пользователь: ".$username." письмо будет отправлено с адреса: <font color=\"red\">$usermail</font> тип пользователя: $usertype</b></center><br><br>";

//ОПРЕДЕЛЯЕМ ТИП БРАУЗЕРА
//ОПРЕДЕЛЕНИЕ БРАУЗЕРА
$agent=getenv("HTTP_USER_AGENT");
if(strlen($agent)>2&&!strstr($agent,'MSIE'))
{    
    //echo "НЕ IE<br>";
    $ie=0;//ЭТО НЕ IE
}    
else
{
    //echo "<b>IE</b><br>";
    $ie=1;//ЭТО IE
}

//ОПРЕДЕЛЯЕМ РАЗМЕР ЭКРАНА
?>
<style type="text/css" media="screen">
    
    <!-- .suggest_link {
        background-color: #FFFFFF;
        padding: 2px 6px 2px 6px;
    }
    .suggest_link_over {
        background-color: #3366CC;
        padding: 2px 6px 2px 6px;
    }
    #search_suggest {
        position: absolute; center: 500px;
        background-color: #FFFFFF; 
        text-align: left; 
        border: 1px solid #000000; -->            
    }
    #txtHint {
        position: absolute;
<?php
if($manager!=1){
 echo "left: 827px;";
 echo "top: 292px;";
}
else{
 echo "left: 827px;";
 echo "top: 323px;";
}
?>
        background-color: #FFFFFF; 
        text-align: left; 
        border: 1px solid #000000;

    }
</style>
<script type="text/javascript">
function getElementPosition(elemId) {
    var elem = document.getElementById(elemId);
    var w = elem.offsetWidth;
    var h = elem.offsetHeight;
    var l = 0;
    var t = 0;
    while (elem) {
        l += elem.offsetLeft;
        t += elem.offsetTop;
        elem = elem.offsetParent;
    }
    return {"left":l, "top":t, "width": w, "height":h};
}
window.onload = function() {
    var elem = document.getElementById('txtHint');
    var p = getElementPosition('txtHint');
    
    elem.style.left = p["left"];
    elem.style.top = p["top"];
}
</script>
<!-- -->

<script language="JavaScript" type="text/javascript" src="./suggest/clienthint.js"></script>

    <div align="center">
<br>
            <form action="./index.php?option=com_hello&view=hello&task=search" name="myform" method="post">
                <input type=radio name="answer" value="1" checked>поиск везде  
                <input type=radio name="answer" value="2">поиск в новом  
                <input type=radio name="answer" value="3">поиск в госрезерве<br><br>
                <input type="text" name="mytext" size="40" id="txt4" onkeyup="showHint(this.value)" autocomplete="off">
                <input name="Submit" type=submit value="Искать">
                <br>
                <br>
                <div id="txtHint" align="center" style="width: 263px; height: 0px;"></div>
            </form>
        </div>


Не хочет код итоговый пахать!

Это сообщение отредактировал(а) TetraHC - 11.6.2009, 09:10
PM MAIL   Вверх
TetraHC
Дата 15.6.2009, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



http://forum.vingrad.ru/forum/topic-262578...y1891731/0.html

Эту тему просьба закрыть (чтобы не было темы дубля)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1190 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.