Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2011, 18:29
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

Передача переменной из JavaScript в PHP и обратно
Доброго времени суток уважаемые знатоки.
У меня небольшой ступор с одной функцией... Я хорошо могу писать алгоритмы в PHP но яваскрипт для меня темный лес и я надеюсь на вашу помощь.
Наверное тема стара как мир но я в ней не разбираюсь и поэтому я обращаюсь к вам.

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

покапался у вас на форуме и нашел вот этот код:

var data = 'user=' + encodeURIComponent(UserName.value) + '&email=' + encodeURIComponent(UserEmail.value) + '&text=' + encodeURIComponent(UserText.value); //Тут должны быть все твои данные из input, textarea или другое что нибудь
request.open('POST', 'mail.php', !0); //метод передачи данных, файл, асинхронный запрос,
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); //тип header,
request.send(data); //посылаем данные.


Распишите пожалуйста что это за функции и как они работают... я в этом ничего не понимаю.
вот если конкретизировать я не понимаю как 'user=' + encodeURIComponent(UserName.value) вот этот кусочек присобачить к форме
<FORM action="register.php?step=2" METHOD="POST">
	<h1>Регистрация</h1>
	Логин<BR>
	<INPUT TYPE="text" SIZE="20" NAME="login"><BR>
           ...

и что означает !0 в передаче что за асинхронный запрос и зачем он?
как получить ответ от PHP скрипта?

Последний раз редактировалось Vuzy, 01.07.2011 в 19:10.
Ответить с цитированием
  #2 (permalink)  
Старый 01.07.2011, 20:48
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

http://javascript.ru/ajax
Ответить с цитированием
  #3 (permalink)  
Старый 01.07.2011, 22:05
Аватар для yashka525
Mr. Jacob
Отправить личное сообщение для yashka525 Посмотреть профиль Найти все сообщения от yashka525
 
Регистрация: 20.01.2011
Сообщений: 194

Сообщение от Vuzy
и что означает !0 в передаче что за асинхронный запрос и зачем он?
!0 означает true. А асинхронно значит, что браузер не ждет (не зависает) выполнения запроса для продолжения скрипта. Вместо этого к свойству onreadystatechange подвешивается функция, которую запрос вызовет сам, когда получит ответ с сервера (xmlhttprequest.ru).

<INPUT TYPE="text" SIZE="20" NAME="login" *!*id="UserName"*/!*><BR>

var UserName = document.getElementById('UserName'); //Вот Вам и UserName.


DreamTheater прав, нужно почитать http://javascript.ru/ajax, но если будет вообще не понятно, тогда поможем.
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2011, 11:19
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

var statusElem = document.getElementById('checkstatus')
req.onreadystatechange = function() {  
	        if (req.readyState == 4) { 
	            statusElem.innerHTML = req.statusText
	            if(req.status == 200) { 
	                alert("Ответ сервера: "+req.responseText);
	            }
	        }
	    }
var login = 'login=' + encodeURIComponent(login.value);
request.open('POST', 'checklogin.php', !0);
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
request.send(login);

<FORM action="register.php?step=2" METHOD="POST"> 
	    <h1>Регистрация</h1> 
	    Логин<BR> 
	    <INPUT TYPE="text" SIZE="20" NAME="login" id="login">
               <div id="checkstatus"></div><BR>


тоесть я так понимаю конструкция должна быть чем то вроде этого для отправки логина на сервер? PHP скрипт отдает строчку HTML кода и возвращает ее между тегами DIV

а когда PHP получает данные скрипта они передаются в переменной $_GET['value']/$_POST['value']
или в моем случае это будет login?

Последний раз редактировалось Vuzy, 02.07.2011 в 12:06.
Ответить с цитированием
  #5 (permalink)  
Старый 02.07.2011, 13:29
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Vuzy,
нет не вроде. здесь смешано два метода-отправка формы и отправка данных с использованием аякс.
можно смешать их-что и делается.но для этого нужно хотябы знать язык и различие между аякс и формами.
выберите что то одно

Последний раз редактировалось dmitriymar, 02.07.2011 в 13:32.
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2011, 14:55
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

Если бы я различал эти два метода =\
Я потому и обратился к вам что бы вы мне объяснили ... читал по той ссылке что мне дали там как бы все работает но не совсем то что надо мне надо отправить данные а там такого примера нет. ну и потом получить ответ в виде картинки крестика или галочки пхп скрипт я напишу сам мне надо только понять как отправить данные и как их получить в пхп скрипте и все =)
Ответить с цитированием
  #7 (permalink)  
Старый 02.07.2011, 15:34
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

получение и отправка данных из формы это основы рнр. а чтоб понять аякс и произвести все действия необходимо знать яваскрипт. нет решения-нажать пару кнопок и всё готово.
получить в рнр-как обычно из массивов гет или пост-всё тоже
Ответить с цитированием
  #8 (permalink)  
Старый 02.07.2011, 23:58
Аватар для yashka525
Mr. Jacob
Отправить личное сообщение для yashka525 Посмотреть профиль Найти все сообщения от yashka525
 
Регистрация: 20.01.2011
Сообщений: 194

Сообщение от Vuzy Посмотреть сообщение
а когда PHP получает данные скрипта они передаются в переменной $_GET['value']/$_POST['value']
или в моем случае это будет login?
Все это сделать очень легко.
<h1>Регистрация</h1>
<form onsubmit="SubmitForm(); return false;">
   Логин<br /> 
   <input size="20" id="login" />
   <div id="checkstatus"></div>
   <br />
</form>

function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
var *!*request*/!* = getXmlHttp();
function SubmitForm(){
var statusElem = document.getElementById('checkstatus');
var login = document.getElementById('login');
*!*request*/!*.onreadystatechange = function() {  
	        if (*!*request*/!*.readyState == 4) { 
	            statusElem.innerHTML = *!*request*/!*.statusText
	            if(*!*request*/!*.status == 200) { 
	                statusElem.innerHTML = *!*request*/!*.responseText;
	            }
	        }
	    }
var data = 'login=' + encodeURIComponent(login.value);
request.open('*!*POST*/!*', 'checklogin.php', true);
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
request.send(data);
}


В php пишете
<?php
echo 'Ваш логин '.$_POST['login']; //Это отобразится в <div id="checkstatus"></div>
?>

Удачи!

Последний раз редактировалось yashka525, 26.09.2011 в 20:27.
Ответить с цитированием
  #9 (permalink)  
Старый 03.07.2011, 17:49
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

Так если поковырятся то понятно что сначала скрипт инициализирует метод переберает комбинации которые поддерживает браузер вот этим кодом:
function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

Тоесть это такой себе мастхев в аяксе?

потом вызываем функцию в переменную?
var request = getXmlHttp();

и при каждом обращении к какому то методу вызываем функцию getXmlHttp()
Хорошо это понятно...
с getElementById тоже ясно.... кстати в строке 20 метода getElementById не хватает буквы Т!!!


encodeURIComponent(login.value) что делает? Перекодирует введенные данные?
Это поэтому у меня при выводе логина обратно крякозябры?
Можно ли сделать так ?
var data = 'login=' + login.value;

Тут вот в чем дело ... С англйискими символами проблемм нет... а вот русские символы крякозябрятся и когда эти символы ввести в БД он не находит аналогов и выдает что ник свободен.

Последний раз редактировалось Vuzy, 03.07.2011 в 19:59.
Ответить с цитированием
  #10 (permalink)  
Старый 03.07.2011, 20:31
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

Update - Решил проблемму с кодировками командой mb_detect_encoding() и iconv() Всем спасибо огромное за помощь
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача массива из Php в Javascript kamushek Серверные языки и технологии 45 20.02.2012 11:11
передача из php в javascript многострочной переменной smollvrn Общие вопросы Javascript 12 14.11.2010 20:38
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
передача массива из PHP в javascript simple Общие вопросы Javascript 3 03.10.2010 12:19
Передача переменной с JS в PHP и обратно kamushek Общие вопросы Javascript 2 22.08.2010 16:12