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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вызов js функции, проблема передачи параметров 
:(
    Опции темы
knut
Дата 15.3.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



есть php функция и javascript функц, show_hide 
Код

function some_func{
   $mem1;
   $mem2;
   //...
   echo("<label class=\"text\" onclick=\"show_hide(this,$mem1,$mem2)\">");
  //..
}


Код

<script type="text/javascript">
function show_hide(label,var1,var2){
}
</script>

почену у мення show_hide функция не вызовается?


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
SelenIT
Дата 15.3.2008, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Есть подозрение, что ф-ция show_hide ожидает строки, а получает имена переменных (скорее всего несуществующих). Если так, должно помочь
Код

   echo("<label class=\"text\" onclick=\"show_hide(this,'$mem1','$mem2')\">");



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
vasac
Дата 16.3.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



Уж тыщу раз твердили миру: не работает что-то на клиенте, смотрите html-код, а не php-код, который его формирует.
PM WWW   Вверх
knut
Дата 16.3.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



естд дерево.
проблема след.
есть 2 баттона (add и remove) и две функции addtodatabase($title,$pid); и RemoveFromDadaBase$title);
а вот то что выполняется при нажатие на буттон ы
Код


if($_SERVER['REQUEST_METHOD']=='POST') { 
        if($_POST['AddNode'] == "Add"){
    addtodatabase($title,$pid);// вот сюда
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
    exit;
    }    
     else if($_POST['RemoveNode'] == "Remove")
     {
        
        RemoveFromDadaBase($title);
        header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
        exit;
     }


формируем дерево 
Код

//...
 <? echo("<li><label class=\"text\" onclick=\"show_hide(this,'$m_mem1','$m_mem2')\">"); ?>



и сама йаваскрпит функция 

Код


function show_hide(label,title,pid) {}



так вот title и pid  я получаю когда кликаю на любую ветку в  дереве в функции 
show_hide(label,title,pid);
так вот у меня проблема с передачей етиx значении в addtodatabase и RemoveFromDadaBase.
Если при онклике в  show_hide() е я получил эти значения но вот как перед нажатием на баттоны иx получить? 

функции addtodatabase и RemoveFromDadaBase добовляют и удаляют ветки в дереве соответственно
вот и мне надо на клике получить то метсто куда и буду добовлять или удалять ветки 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Sardar
Дата 16.3.2008, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Надеюсь это не в новинку.
$m_memN - нужно пропускать через addslashes(), вдруг кавычки попадутся.

По теме, либо вбей в поиск ajax, либо создай скрытый фрейм и отсылай в него форму с инфой.
document.getElementById("моя форма") - достать форму
форма.submit(); - отправить форму
форма.elements["имя скрытого поля"].value = .. - установить значение для отправки, где $_REQUEST['имя скрытого поля'] видно на сервере.

Этого должно хватить, спрашивай что не ясно.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
knut
Дата 17.3.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Sardar, 
Цитата

либо создай скрытый фрейм и отсылай в него форму с инфой....

т.е здесь передать скрытый параметр
Код

<html>
        <form name = "Form"  action="mydoc.php" method="POST">
            <input type="submit" name ="AddNode"  value="Add"/>
            <input type="submit" name="RemoveNode" value="Remove"/>            
        </form>
</html>




Это сообщение отредактировал(а) knut - 17.3.2008, 16:34


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Sardar
Дата 17.3.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



knut, так, сначала дай обещание что эту ссылку ты прочёл и понял. Т.е. ты хорошо понимаешь разницу между клиенткой и серверной сторонами.

В итоге поймём, что на сервер мы посылаем запрос, а там уже есть диспетчер, что прочтёт наши параметры и запустит нужную функцию. Пусть это будет параметр ?act=действие, следовательно на сервере switch(@$_REQUEST['act'])... и по содержанию.

Теперь осталось сгенерить запрос, можно ajax'ом, но чую тебе лучше сначала разобраться с формами. Добавили на страницу iframe, в него загрузили пустую форму. Форму можно и в основном окне создатать, аттрибутом target="имя фрейма" отослать в ифрейм, но доктайп придётся для фреймов ставить (забей, если слово "валидность" и validator.w3.org для тебя чужды).

Можно на лету создавать опции со значениями, но тебе лучше пока заранее добавить <input type="hidden" name="act">, ведь пока других параметров не используем. Далее document.getElementById("ид формы").elements.act.value = действие_понимаемое_сервером;. Всё осталось эту же форму .submit() и вот мы опросили сервер, там вызвались необходимые функции.

А как передать больше аргументов? Можно насоздавать заранее массу input'ов, либо:

Код
var inp = document.createElement("input");
inp.type = "hidden";
inpt.name = имя;
inp.value = значение;
document.getElementById("ид формы").appendChild(inp);

То же самое, только создали скриптами.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
knut
Дата 18.3.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



может и туплю но не как не могу понять каким образом мене тут iframe поможет?
вот создал iframe И генерим запрос
Код

<iframe>
<form name = "Form"  action="mydoc.php" method="POST">
<input type="hidden" name="act" onclick="Get_Element()>
</iframe>

И уже в Get_Elemen получаем ид ветки в дереве а уже потом добовляем ноду(веку в дерево)

Цитата

так, сначала дай обещание 

даю да и спасибо за сылкуsmile


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Atlete
Дата 18.3.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если я правильно понял твою задачу то как по мне ее легче при помощи ajax решить. 
Примеров самого простого использования ajax полно.


Это сообщение отредактировал(а) Atlete - 18.3.2008, 16:09
PM MAIL ICQ   Вверх
Sardar
Дата 18.3.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Цитата(knut @  18.3.2008,  13:53 Найти цитируемый пост)
И уже в Get_Elemen получаем ид ветки в дереве а уже потом добовляем ноду(веку в дерево)

Что то я уже путаюсь, но не пойму, мы хотим отправить инфу на сервер (id узла к примеру, что бы удалить) или наоборот принять (инфу узла, что бы на клиенте отобразить)?

Цитата(knut @  18.3.2008,  13:53 Найти цитируемый пост)
каким образом мене тут iframe поможет?

Ну если немного теории поучить, то можно узнать что такое iframe и почему вёрстка, что ты привёл не имеет особого смысла. Я давал примеры для отправки инфы на сервер, после твоего последнего поста я всё же не уверен, что это тебе нужно...


knut, таки дочитай ту ссылку, затем хорошо осмысли что ты делаешь и как устроенно взаимодействие клиента с сервером (помогают наглядные примеры, допустим открыть gmail.com и отключить и-нет, посмотреть на ошибки). После понять что такое запрос (в википедии узнать про разного рода RPC механизмы, временно выбросить их из головы и всё таки думать в запросах/ответах). Не останавливаться пока не поймёшь что такое HTTP запрос, затем напиши свой серверный скрипт, что будет что нибудь делать по параметру. Затем в ручную из браузера набери URL и убедись, изменяя параметр, что поведение серверного скрипта меняется. Затем создай страницу, добавь <iframe src="тот URL, что вбивал в адресную строку">. Ну а последним штрихом будет <iframe id="test"> и document.getElementById("test").src = "снова тот URL";

Пройдя все эти шаги ты действительно поймёшь, о чём та статься, что я так прошу тебя прочесть.

Добавлено через 2 минуты и 8 секунд
Цитата(Atlete @  18.3.2008,  14:59 Найти цитируемый пост)
Примеров самого простого использования ajax полно.

Мне кажется knut не понимает принципа клиент-сервер, на этом этапе очень вредно приучать к ajax'у, красивым RPC и прочему.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
knut
Дата 18.3.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не умение выражать мысли и неумения четко излагать задачи  ослажняет дело тем кто хочет тебя помочьsmile
за это прошу прошения
а задача у меня след.
есть дерево и  два баттон а add и соответственно delete так вот мне надо(кликом) выбрать ветку в дереве и или 
далить или добавить ветку в дереве.
а в остальном Sardar, надо болше курить доки.(но принцып клиент-сервермне точно понятен)

Добавлено через 4 минуты и 32 секунды
сейчас только осилью что сказал 
Sardar, 



--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Sardar
Дата 18.3.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Так, представим что на сервере есть модель дерева, а у пользователя есть его графическое представление. По кнопкам хотим добавлять/удалять ноды.

На сервере есть сервисы, откликающиеся на:
  • _http://мой-хост.ru?action=add&parent=<ид предка>&name=<имя нового узла>
  • _http://мой-хост.ru?action=delete&id=<ид ноды, что нужно удалить>
Сначала делаем на iframe, что бы просечь фишку, потому возвращают сервисы html документ с вызовом нашей функции. В будущем заменяешь на XML документ со статусом и опрашиваешь сервисы уже ajax'ом.

Пусть есть дерево, в узлах которого кнопки:
  • создать дочернюю ноду, вызывает onclick="addNode(<ид этой ноды>)"
  • удалить эту ноду, вызывает onclick="removeNode(<ид этой ноды>)"

Функция addNode показывает текстовое поле, куда вводим имя и по кнопке отправить вызываем createNode(<id родительской ноды>, <имя>). Как создавать элементы на лету обсуждалось не первую тысячу раз, вбей в поиск хотя бы "динамически создать" или  "createElement".

Имеем createNode и removeNode, что должны опросить ссылки выше. В ответ ожидаем:
Код
<html><head><script type="text/javascript">requestComplete(<статус код>, "опциональное сообщение");</script></head></html>

Выходит когда запрос отработает, получим уведомление на requestComplete.

Вносим в вёрстку заранее скрытый ифрейм:
Код
<iframe id="sender" name="sender" style="position: absolute; width: 10px; height: 10px; top: -50px; visibility: hidden">
<form id="data" action="http://мой-хост.ru" target="sender" method="GET"></form>


Тогда послать запросы можно в простейшем случае:

Код
function createDataField(name, value) {
  var act = document.createElement("input");
  act.type = "hidden";
  act.name = "action"
  act.value = value;
  return act;
}


function createNode(parent_id, name) {
  var form = document.getElementById("data");
  form.innerHTML = "";
  form.appendChild(createDataField("action", "add"));
  form.appendChild(createDataField("parent", parent_id));
  form.appendChild(createDataField("name", name));
  form.submit();
}

//вызовет фрейм когда будет готово
function requestComplete(status, msg) {
  alert("Response: " + status + "\n" + msg);
}


Теперь подумай и напиши removeNode. После расширим код для отлова ошибок и синхронизации запросов, либо если почувствуешь, что готов, перейдём на ajax.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
knut
Дата 19.3.2008, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Sardar, 
я дописал свой код до конца и как не странно он работает(конечно он те само совершенство но будем сторатся ) посмотри если не трудно и дай свои замечания это важноsmile
сейчас попробую сделать так как и ты советовал ранее а затем это все сделать ajax ом 
p.s
да и буду блогодарен если скиниш доки по ajax у 

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  tree_.rar 2,53 Kb


--------------------
Цитата

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


 




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


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

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