Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Java Script и PHP
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Java Script и PHP

Страниц (1): [1]
 

1. MasterofCDM - 31 Октября, 2008 - 15:31:28 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <script language="JavaScript">
  3.  
  4. function testEmail(a) {
  5.  
  6. a = 1;
  7.  
  8. <?php
  9.  
  10. ...
  11.  
  12. ?>
  13.  
  14. return a;
  15. }
  16.  


Проблемка такая, нужно содержимое переменной "а " передать в php переменную $a и после обработки обратно. Пользовался поиском, информации в инете нарыл много, но все не совсем то. Какие-то громадные коды или передача через открытие страницы, а нет ли какого-нибудь более простого способа?
2. vitaliy_mad - 31 Октября, 2008 - 16:01:39 - перейти к сообщению
нет. тлоько вызовом скрипта... дело в том что ЯваСкрипт выполняется на клиентской машине уже после загрузки браузером кода, который выведет PHP на сервере...
3. Champion - 31 Октября, 2008 - 16:02:12 - перейти к сообщению
АЯКС
http://javascript[dot]ru/ajax/tutorial
(Добавление)
Ваш код php размещаете у себя на сервере, передаете ему в качествет параметр вашу переменную, код выполняется и последней строкой возвращает значение оператором echo. Получаете это значение методом респонсТекст объекта хттпРеквест. Почитаете по ссылке, поймете, о чем я
4. ALEN - 31 Октября, 2008 - 16:10:55 - перейти к сообщению
MasterofCDM
Пользуйтесь тем, что дал Champion.
(Добавление)
Вот пример скрипта:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. function createRequest() {
  3.     if (request != null)
  4.         return;
  5.  
  6.     try {
  7.         request = new XMLHttpRequest();
  8.     } catch (trymicrosoft) {
  9.         try {
  10.             request = new ActiveXObject("Msxml2.XMLHTTP");
  11.         } catch (othermicrosoft) {
  12.             try {
  13.                 request = new ActiveXObject("Microsoft.XMLHTTP");
  14.             } catch (failed) {
  15.                 request = null;
  16.             }
  17.         }
  18.     }
  19.  
  20.     if (request == null)
  21.         alert(" :-( ___ Error creating request object! ");
  22.  
  23. }
  24.  
  25.  
  26. function checklog() {
  27.     createRequest();
  28.     var txt = "вася";
  29.     var url = "skript.php";
  30.     request.onreadystatechange = updateRandNumber;
  31.     request.open("POST", url, true);
  32.     request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  33.     request.send("user="+txt);
  34. }
  35.  
  36.  
  37.  
  38. function updateRandNumber() {
  39. if (request.readyState == 4) {
  40. request.responseText;
  41. }}
  42.  

(Добавление)
request.send("user="+txt); - эта часть передает запрос, в данном случае POST.

Ниже функция "request.responseText" - данная штука - это то, что вывидит скрипт skript.php
5. MasterofCDM - 31 Октября, 2008 - 17:07:37 - перейти к сообщению
Понял, спасибо!!! Буду ковыряться дальше.
6. ALEN - 31 Октября, 2008 - 19:44:05 - перейти к сообщению
MasterofCDM
Если найдешь метод проще и удобней и кроссбраузерный, как этот - будет интересно посмотреть - выкладывай сразу!
7. MasterofCDM - 01 Ноября, 2008 - 09:22:36 - перейти к сообщению
ok

еще вопросик:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. function createRequest() {
  3. if (request != null)
  4. return;
  5.  
  6. try {
  7. request = new XMLHttpRequest();
  8. } catch (trymicrosoft) {
  9. try {
  10. request = new ActiveXObject("Msxml2.XMLHTTP");
  11. } catch (othermicrosoft) {
  12. try {
  13. request = new ActiveXObject("Microsoft.XMLHTTP");
  14. } catch (failed) {
  15. request = null;
  16. }
  17. }
  18. }
  19.  
  20. if (request == null)
  21. alert(" :-( ___ Error creating request object! ");
  22.  
  23. }
  24.  
  25.  
  26. function checklog() {
  27. createRequest();
  28. var txt = "вася";
  29. var url = "skript.php";
  30. request.onreadystatechange = updateRandNumber;
  31. request.open("POST", url, true);
  32. request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  33. request.send("user="+txt);
  34. }
  35.  
  36.  
  37.  
  38. function updateRandNumber() {
  39. if (request.readyState == 4) {
  40. request.responseText;
  41. }}
  42.  


вот я запускаю "script.php", выполняется обработка и потом мне надо вернуть значения некоторых переменных обрато в JS, а как это сделать?
8. Agassi - 02 Ноября, 2008 - 12:57:08 - перейти к сообщению
MasterofCDM пишет:
переменной "а " передать в php переменную $a и после обработки обратно


Легче через hidden поле отправить через форму.Чем заради этого включить аякс.


Код в тестовом виде,всякие алерты нужно убрать конешно же))
PHP:
скопировать код в буфер обмена
  1.  
  2. function handleRequestStateChange()
  3. {
  4.  if(xmlHttp.readyState==4)
  5.         {
  6.         if(xmlHttp.status==200)
  7.                 {
  8.                  try
  9.                         {
  10.                  handleServerResponse();
  11.                 }
  12.              catch(e)
  13.                         {
  14.                         alert('Ошыбка чтения ответа'+e.toString());
  15.                         }
  16.                 }
  17.             else
  18.         alert('Возникли проблемы во время получения данных \n'+xmlHttp.statusText);
  19.      }
  20. }
  21. function handleServerResponse()
  22. {
  23.  
  24.  var xmlResponse=xmlHttp.responseXML;
  25.  xmlRoot=xmlResponse.documentElement;
  26.  titleArray=xmlRoot.getElementsByTagName('title');
  27.   isbnArray=xmlRoot.getElementsByTagName('isbn');
  28.   var html="";
  29.   for(var i=0;i<titleArray.length;i++)
  30.   html+=titleArray.item(i).firstChild.data+','+isbnArray.item(i).firstChild.data+'<br />';
  31.   myDiv=document.getElementById('my');
  32.   myDiv.innerHTML='Сервер говорит:<br />'+html;
  33.  }
  34.  
  35.  
  36.  
  37.  
  38. Что сервер передает при запросе AJAX
  39.  
  40.  
  41. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  42. <response>
  43. <books>
  44. <book>
  45. <title>
  46. Bulding Responsive Web Applications with AJAX and PHP
  47. </title>
  48. <isbn>
  49. 1-90481-82-5
  50. </isbn>
  51. </book>
  52. <book>
  53. <title>
  54. Beginning PHP 5 and MySql E-Commerce. From Novce to Professional
  55. </title>
  56. <isbn>
  57. 1-59059-392-8
  58. </isbn>
  59. </book>
  60. </books>
  61. </response>
  62.  


Думаю этого примера хватит.ЧТоб понять как AJAX работает,если даже не знаешь ваше про AJAX
(Добавление)
MasterofCDM пишет:
мне надо вернуть значения некоторых переменных обрато в JS, а как это сделать?


Верхный код скинул для этого вопроса
9. ALEN - 02 Ноября, 2008 - 21:16:17 - перейти к сообщению
MasterofCDM
Получаешь ответ и делишь его по регулярным выражениям
(Добавление)
Agassi
Ничего конечно против, но лично для меня: лишнии формы они только как мусор на странице. А так все упрощено.

P.S. Это конечно уже на стиль реализаций...
10. Agassi - 02 Ноября, 2008 - 21:53:58 - перейти к сообщению
ALEN пишет:
лишнии формы они только как мусор на странице.


Соглсаен.Я имеел ввиду,чтоб заради одной штуки не включить AJAX.Если проэкт большой,тогда лучше аякс.А еслималенькый проэкт.И незачем АЯКС.ТАк как мало его знают.И дальше им что-то делать кроме как получить некый код который им нужно,будет служнее
11. Champion - 03 Ноября, 2008 - 08:39:07 - перейти к сообщению
MasterofCDM пишет:
вот я запускаю "script.php", выполняется обработка и потом мне надо вернуть значения некоторых переменных обрато в JS, а как это сделать?

Вывод выполненного скрипта хранится в свойстве responseText того объекта, что вы создавали. Скриптом надо просто вывести результат. Я ж написал
(Добавление)
Agassi пишет:
заради одной штуки не включить AJAX.
Вы хотите сказать, что ради того, чтоб посчитать одно значение, надо организовывать форму и потом перезагружать заново всю страницу? По-моему, как раз в таких случаях АЯКС как раз и нужен, чтоб без лишней перерисовки
12. ALEN - 03 Ноября, 2008 - 09:30:55 - перейти к сообщению
Agassi
Посмотрите, что ответил Champion.

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

Теперь премер который раставит все по своим местам:

Пользователю необходимо зарегистрироватся. Нам нужно проверить логин и email на наличие в БД. Т.е. нам нужно сделать 2 запроса. Реализовать можно так:

1) ввели логин, отправили в какой-то скрипт, тот выводит не XML документ, а просто 1 или 0. Т.е. 1 - все ок, 0 - уже есть такое в БД или какие-то еще причины.
2) Вернули в JavaScript через responseText и условный оператор, если 1 - то выводим галочку, если 0 - то красный крестик.

Это быстро и пользователю комфортно.

И еще поэксперементируйте без XML.

 

Powered by ExBB FM 1.0 RC1