Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [3]  Все   Вниз
  Печать  
Автор Тема: Взаимодействие JavaScript и PHP  (Прочитано 83813 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #60 : 10-01-2006 18:16 » 

В последнем обновлении движка (SMF1.1RC2) есть возможность задавать стиль каждому форуму. Как и что - пока не разбирался.
Кстати, а какие форумы иначе выглядят?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #61 : 10-01-2006 18:36 » 

RXL У меня раньше был выставлен стиль Babylon. Все ветки выглядят VU1Style. Только ветка "Самоуправление" выглядит Babylon. Но это те ветки, на которые я сегодня заходил.

PS. Извиняюсь "Форум об этом форуме" У меня в Вавилоне показывается. Судя по всему не только у меня. Звездочки заместо линеек горели также и у Hooter. Когда мы сегодня обсуждали с ним, что это вообше значит.
« Последнее редактирование: 10-01-2006 18:46 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #62 : 10-01-2006 18:49 » 

Пару дней назад MOPO3, как он сказал, выставил всем принудительно VUbeta1.
Сейчас стоит:
Цитата
Вид форума по дефолту: "VUbeta1"
Изменить всем на: "Не менять"
Возможно, что кто-то выключил принудиловку.

Как ведет себя текущая версия движка, я еще не знаю - все несколько дней прошло. Чтобы понять, глюк это или фича, надо понять логику поведения.
Потом, еще могла повлиять конверсия базы под новую версию.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #63 : 11-01-2006 01:22 » 

У меня "Форум об этом форуме" показывается в другом стиле, все на английском, но дизайн мне больше нравится.
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #64 : 11-01-2006 06:37 » 

До выходных доживем - посмотрю что к чему.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #65 : 11-01-2006 08:12 » 

Хммм, вроде как установил всем...
Посмотрю что там такое.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Сергей Добросклонов
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #66 : 20-03-2010 08:58 » 

Почитал тему, почитал множество книг по ява-скриптам, но так и не понял как сделать некоторые вещи. Допустим, у меня есть два текстовых поля и кнопка. Я ввожу в первое поле значение, нажимаю на кнопку, во втором поле появляется значение первого. Это я могу сделать, а вот как сделать, чтобы при нажатии на кнопку значение поля появилось в заранее подготовленном пустом теге див или спан?
И второй вопрос: я написал скрипт, который по нажатию на кнопку выполняет запрос к базе:
Код:
<script language="javasript">
function {
<php
здесь запрос
?>
}
</script>
Но проблема в том, что когда нажимешь на кнопку в первый раз, запрос срабатывает, а потом ничего не происходит. Так как получаеется, что пхп код прерывает ява-скрипт, а потом пхп код закрывается и вновь идёт ява. Подскажите, как можно решить эти задачи. Заранее очень благодарен.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #67 : 20-03-2010 09:05 » 

По первому вопросу.
Код:
document.getElementById('YouDiv').innerHTML = 'Your text';

По второму вопросу. Не путай, то что работает на стороне сервера, с тем, что работает на стороне клиента. PHP отрабатывается на стороне сервера. JavaScript отрабатывается на стороне клиента.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Сергей Добросклонов
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #68 : 20-03-2010 09:33 » 

Finch, огромное спасибо за подсказку! Так просто, зато фиг где найдёшь! Вечно выложат скрипт, не пойми какого размера и поди разберись Улыбаюсь
Но что означет это:
Цитата
Не путай, то что работает на стороне сервера, с тем, что работает на стороне клиента. PHP отрабатывается на стороне сервера. JavaScript отрабатывается на стороне клиента.
Я находил пример, где проделывали подобную операцию с помощью JsHttpRequest.query, но что это и как работает, я не знаю. В этой функции был указан пхп файл для добавления комментария, а скобках были даны зхначения, взятые из полей формы. Проблема в том, что без самого этого файла, я разобраться не смог.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #69 : 20-03-2010 09:40 » 

И второй вопрос: я написал скрипт, который по нажатию на кнопку выполняет запрос к базе:
Код:
<script language="javasript">
function {
<php
здесь запрос
?>
}
</script>

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

Кстати, тему надо переименовать: Java и JavaScript - совершенно разные вещи.

Запомни:
JavaScript - это интерпретируемый язык, выполняемый на стороне клиента - в браузере. Никакого другого языка, который бы присутствовал в каждом браузере, на клиентской стороне нет.
PHP - это интерпретируемый язык, выполняемый на стороне сервера. Равно как на сервере может работать и любой другой интерпретатор.

Т.е. "вызвать PHP из JavaScript" невозможно!

Взаимодействие клиента и сервера по HTTP стандартно: клиент делает HTTP-запрос, сервер этот запрос передает обработчику URL, указанного в запросе, а тот обрабатывает запрос и выдает ответ.

Код: (Javascript)
<script type="text/javascript">
function go()
{
  document.location = "http://my.example.com/script.php?param1=value1&param2=value2"
}
</script>

Данное действие приводит к загрузке новой страницы с сервера!
Вот этот скрипт, к примеру, создает новую страницу:

Код: (PHP)
echo "Param1: ", $_GET['param1'], '<br />';
echo "Param2: ", $_GET['param2'], '<br />';
« Последнее редактирование: 20-03-2010 09:48 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Сергей Добросклонов
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #70 : 20-03-2010 09:51 » 

Как не возможно? Люди же делают. Куча примеров есть в интернете. Просто не очень разбираться в готовых скриптах. Вот один из фрагментов, которые я нашёл.
Цитата
function addComment()   

02 {   

03   //получаем ссылку на нашу форму   

04   form = document.getElementById("com");   

05   //текст комментария   

06   text = form.comtext.value;   

07   //имя автора   

08   name = form.comname.value;   

09    //id фото   

10   photo = form.comphoto.value;   

11    //Ник пользователя   

12   nickname = form.comnickname.value;   

13    //Аватар пользователя   

14   nickphoto = form.comnickphoto.value;   

15   //получаем ссылку на поле для вывода информации   

16   erdiv=document.getElementById("cerror");   

17   //добавляем запись   

18   erdiv.innerHTML = "Спасибо! Ваш комментарий сейчас будет добавлен! Пожалуйста, подождите." 

19   

20   //посылаем запрос на сервер   

21   JsHttpRequest.query   

22   (   

23     "comment.php",   

24     {   

25       "comtext": text,   

26       "comname": name,   

27       "comphoto": photo,   

28       "comnickname": nickname,   

29       "comnickphoto": nickphoto   

30     },   

31     function (result, errors)   

32     {   

33       //получаем ответ от сервера   

34       if (result.err=='no')   

35       {   

36         //очищаем поле для вывода информации   

37         erdiv.innerHTML = "";   

38         // создаем новый блок Div   

39         td = document.createElement("div");   

40         // заполняем блок div информацией   

41         td.innerHTML = "<hr><b>"+result.name+"</b><br>"+result.text+"</b><br>"+result.photo+"</b><br>"+result.nickname+"</b><br>"+result.nickphoto;   

42         // получаем ссылку на блок для добавления комментариев   

43         comtb = document.getElementById("comtab");   

44         // добавляем комментарий в конец   

45         comtb.appendChild(td);   

46         // очищаем поле для ввода информации   

47         form.comtext.value = "";   

48       }   

49       else 

50       {   

51         //если есть ошибки выводим их в поле информации   

52         erdiv.innerHTML = result.log;   

53       }   

54     },   

55   true 

56   )   

57 }
Тем более, что существуют такие методы как jquery и ajax. Но ни одного цельно примера не удалось найти. В книжках только фрагменты кода.
Как я могу не полагаться на книги, я же не изобретал язык этот, откуда ещё могу узнать  как он работает?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #71 : 20-03-2010 09:55 » 

Барин, вот сиди и разбирайся - иначе так и будешь верить в сказки. А в приведенном выше коде нет ничего по теме!
Еще раз, последний: голова человеку дана чтобы думать, а не чтобы верить!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #72 : 20-03-2010 09:59 » 

ты путаешь
Код:
20   //посылаем запрос на сервер   

21   JsHttpRequest.query   

22   (   

23     "comment.php",   

24     {   
с твоими желаниями.

Процитируй хоть одну книгу, где написано что php код выполняется на клиентской стороне. И... я тогда тебе поверю...
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Сергей Добросклонов
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #73 : 20-03-2010 10:12 » 

Ладно, ребят, спасибо. У меня есть много знакомых программистов и они все такие же упёртые и уверенные в себе, а ещё считают, что кругом одни нубасы. И вечно говорят другим, что нужно понимать принципы программирования, зрить в корень, думать головой, надо быть прграммистом отприроды и все дела. Поэтому спорить больше не буду. Но вот чисто я такую вещь скажу: на многих сайтах есть проверка форм. Ты вводишь ник, срабатывает функция и по средствам заброса к базе определяется есть такой ник или нет. И в том примере, который я выложил, как раз это и есть, в переменные записываются данные из формы, потом вызывается файл с пхп кодом, в котором запрос и этому же файлу указываются параметры (тоесть какие значения вставить в поля)...
Ну вот на последок кусок ява-скрипта, в котором вызывается пхп-файл:
Код:
$(document).ready(function()
{
$("#login").blur(function()
{
$("#msgbox").removeClass().addClass('messagebox').text('Проверка...').fadeIn("slow");
$.post("user_availability.php",{ login:$(this).val() } ,function(data)
        {
  if(data=='no')
  {
  $("#msgbox").fadeTo(200,0.1,function()
{
  $(this).html('Этот логин уже занят').addClass('messageboxerror').fadeTo(900,1);
});
          }
  else
  {
  $("#msgbox").fadeTo(200,0.1,function() 
{
  $(this).html('Этот логин доступен').addClass('messageboxok').fadeTo(3000,1);
  $(this).fadeTo(900,0);
});  

          }
        });
    });
});
А вот пхп-файл:
Код:
<?php
include ("../blocks/bd.php"); 
$login=$_POST[&#39;login&#39;];
$query "SELECT `nik`
FROM `users`
WHERE `nik`=&#39;
{$login}&#39; 
LIMIT 1"
;
$sql mysql_query($query) or die(mysql_error());

// если такой пользователь нашелся
if (mysql_num_rows($sql) == 1)
{
  
//юзер недоступен
   
echo "no";
}
 else
{
      
//доступен
  
echo "yes";
}
?>

Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #74 : 20-03-2010 10:17 » 

Барин, почитай про AJAX.

В данном примере вероятно используется библиотека jQuery. Она тоже не выполняет PHP код Улыбаюсь Она делает AJAX-запросы - асинхронные, без перезагрузки страницы.

Твои знакомые дело говорят: пока не станешь думать и применять логику, программированию не научишься. И начинать надо с азов.
Насчет "программист от природы" - это заблуждение. Достаточно иметь средний IQ и желание учиться.
« Последнее редактирование: 20-03-2010 10:20 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #75 : 20-03-2010 10:18 » 

еще раз
Код:
$.post("user_availability.php",{ login:$(this).val() } ,function(data)
Это не вызов php функции
а запрос к серверу...
почитай про ajax

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #76 : 20-03-2010 10:19 » 

RXL, Улыбаюсь
но ничего
ПОВТОРЕНИЕ- мать учения
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Сергей Добросклонов
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #77 : 20-03-2010 10:43 » 

Я уже пол-книги прочитал... Ни одного целого примера. Но не в этом дело. Мне важно ajax это или jqury, всё это тесно связано. Может мне кто-то подсказать как сделать то о чём я просил в не зависимости от языка, подхода и прочего? Это всё что я прошу. Если я не потеме, то может ссылкой кто выручит?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #78 : 20-03-2010 10:54 » 

Барин, Без понимания основ, довольно сложно идти дальше. Как уже сказали, этот эффект достигается с помошью технологии AJAX. ּКстати книжка по нему довольно толстая. И переписывать ее сюда никто не будет. На начальном этапе тебе будет достаточно форма с кнопкой submit. Которая вызывает обновление страници и отсылает на сервер все содиржимое формы. Ключевые слова для поиска теги form, input, . Я лично, когда мне надо что либо вспомнить, смотрю http://www.w3schools.com/default.asp. Правда ресурс англоязычный. Но там есть возможность многие скрипты проверить на примерах в живую,
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #79 : 20-03-2010 10:58 » 

Вот кстати пример оттуда, поля логин и пароль.
Код: (HTML)
<html>
<body>

<form action="" method="post">
Username: <input type="text" name="user" /><br />
Password: <input type="password" name="password" /> <br />
<input type="submit" value="Submit" />
</form>
</body>
</html>
« Последнее редактирование: 20-03-2010 11:01 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #80 : 20-03-2010 11:13 » 

если не хочешь читать книг, то почитай вот это
http://dklab.ru/lib/JsHttpRequest/
там даже примеры есть
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #81 : 20-03-2010 11:16 » 

Барин, краткое описание AJAX есть в Википедии: http://ru.wikipedia.org/wiki/XMLHttpRequest
Там же даны простые примеры использования.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Сергей Добросклонов
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #82 : 20-03-2010 16:49 » 

Спасибо, буду разбираться дальше. Ага
Записан
Сергей Добросклонов
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #83 : 21-06-2010 15:36 » 

Созрел новый вопрос  Улыбаюсь
Допутим я нажал на кнопку, чтобы добавить введённый текст в базу. Кнопка вызывает ява скрипт, который с помощью HttpRequest обращается к php файлу, в котором содержится код для добавления в базу. Возможно ли сделать так, чтобы этот файл после выполнения запроса создал переменну сессии так, чтобы эта переменная была доступна файлу который вызывал выполнение скрипта?
Или может быть на самом ява скрипте есть функция для создания переменных сессий. В поиске нашёл только как куки создавать ява скриптом...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #84 : 21-06-2010 20:27 » 

Типичное заблуждение новичков: не надо мерить файлами и переменными - оперируй программами и передаваемыми данными!
У тебя есть две не связанные программы: JS-программа на клиенте и есть PHP-программа на сервере. На сервер посылаются запросы, на клиент приходят ответы. И ничего более! Если думать правильно, то возможные решения сами придут в голову.

На основе этого переформулируй свой вопрос - пока он непонятный.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Сергей Добросклонов
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #85 : 22-06-2010 13:45 » 

Проблема заключается в том, что в том файле, который вызывается ява скриптом асинхронно, я кроме занесения информации в базу ещё устанавливаю переменную сессии. Но почему-то эта переменная как-будто не существует... Тоесть файл№1 вызвал файл№2, в файле№2 была объявлена переменная сессии (допустип $_SESSION['peremennaja']). Файл№1 содержит код:
Код:
if(isset($_SESSION['peremennaja']))
{
echo $_SESSION['peremennaja'];
}
Но даже после обновления страницы в файле№1 этой строки не появляется, следовательно переменная объявленная в файле№2 не "видна" для файла№1. По моему предполажению, это происходит из-за того, что переменные сессии хранятся на сервере и идентифицируются для определённого браузера. Когда страницу обновляешь, серавер идентифицирует браузер и передаёт ему именно его переменные. Так как файл№2 вызывается явой, то наверное для объявленнной переменной не идентифицыруется браузер и поэтому переменная не видна файлу№1.....
Так вот, можно ли сделать так, чтобы переменная из файла№2 была доступна файлу №1?
Или хотябы передавать переменную назад ява скрипту, и при считывании ответа от сервера объявить переменную сессии средствами ява скрипт (имеет ли ява скрипт такие средства).
Надеюсь так понятнее... Объяснил как смог и как я понимаю проблему сам.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #86 : 22-06-2010 17:36 » 

Проблема заключается в том, что в том файле, который вызывается ява скриптом асинхронно, я кроме занесения информации в базу ещё устанавливаю переменную сессии. Но почему-то эта переменная как-будто не существует... Тоесть файл№1 вызвал файл№2, в файле№2 была объявлена переменная сессии (допустип $_SESSION['peremennaja']). Файл№1 содержит код:

Опять - "файл вызвал файл"... Извини, но так с тобой работать никто не будет. Подковывайся в терминологии!

Правильнее и понятнее было бы так: загрузил страницу по урлу /файл1.php. С нее через AJAX выполняю запрос на тот же сервер по урлу /файл2.php. Он заносит в массив $_SESSION данные. При повторном вызове /файл1.php он эти данные не видит.

И про "передать переменную ... ява скрипту" тоже забудь. Нет и не может быть никаких переменных у двух программ на разных хостах!!!



Механизм сессий опирается на Cookie. Если при запросе клиентом не было передано куки с именем, определенным в настройках PHP, либо переопределенным программно, через функцию session_name(), то session_start() приведет к созданию этого куки, с автоматической генерацией нового идентификатора сессии.

Подробнее механизм куки и сессий почитай здесь:
https://club.shelek.ru/viewart.php?id=263
https://club.shelek.ru/viewart.php?id=264
https://club.shelek.ru/viewart.php?id=265
и прочие из этой серии здесь: https://club.shelek.ru/view.php?id=28

Вероятно ты не вызывал session_start() в файл2.php, либо сделал ранний вывод. Включай вывод сообщений и в ручном режиме смотри, что получается.
« Последнее редактирование: 22-06-2010 17:40 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Сергей Добросклонов
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #87 : 22-06-2010 17:47 » new

RXL, большое тебе спасибо! Выручил! Я выдал конечно... Невнимателен просто до невозможности... Просто тупо забыл написать session_start()... Столько времени потратил на эту фигню, и такое оказалось элементарное решение!
p.s. Статьи прочитал Улыбаюсь
« Последнее редактирование: 22-06-2010 17:59 от Барин » Записан
Страниц: 1 2 [3]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines