function checkLogin( {
var login = document.getElementById('login').value;
$("#logincheck").html('<img src="loader.gif" />');
$("#logincheck").load("logincheck.php", { login: login });
}
Проверка имени пользователя без перезагрузки страницы
т.е. человек заполняет форму, а возле поля "имя пользователя" кнопка "Проверить", при ее нажатии ничего не меняеться, только под этим полем появляеться надпись "имя свободно" или "имя занято, выберите другое".
з.ы. все данные по пользователям храняться в mysql.
Ajax, iframe
http://www.dklab.ru/lib/JsHttpRequest/ почитайте, это точно поможет вам.
1. Нужно прописать в <head> страницы ссылку на jQuery:
[HTML]
<head>
.....
<script type="text/javascript" src="/assets/templates/magazine/jquery.js"></script>
.....
</head>
[/HTML]
Далее в форме под полем для ввода логина нужно создать пустой div с неким id. Пусть будет для примера так:
[HTML]
<form id="regform" name="regform" method="post" action="">
<label>Логин:<input type="text" name="login" id="login" /></label><span class="checkit" style="cursor:pointer;" onclick="checkLogin();">Проверить</span>
<div id="logincheck"></div>
<label>Пароль:<input type="text" name="password" id="password" /></label>
</form>
[/HTML]
Возле поля логина ставим псевдоссылку для проверки на занятость (тэг <span>, по нажатию на текст которого будет запускаться JavaScript ф-ия.
2. В шапку того же html (или другого) файла прописываем JavaScript ф-ию:
Код:
Здесь чуть подробнее остановлюсь. Сперва значение введённое в поле с id='login' передаётся функиции. Затем в пустой див отправляется картинка loader.gif (обычно анимированный gif) на время пока будет получен результат от PHP-скрипта. Далее через XMLHttpRequest запрос JavaScript передаёт значение переменной login.
3. Создаём PHP файл с подобным содержанием:
Код:
<?
// кодировка страницы (очень частая проблема)
header('Content-Type: text/html; charset=utf-8');
// защита от дурака
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
// юзер проверяет через AJAX-запрос
// получаем введённый логин
$login = $_REQUEST[login];
// ищем ео в БД
$result = "SELECT COUNT(login) FROM user_table WHERE login = '$login'";
$sql = mysql_query($result, $db);
$result_array = mysql_fetch_array($sql);
$cnt = $result_array["0"];
// проверяем наличие в БД
if ($cnt == 0)
{
echo "Свободен";
}
else
{
echo "Занят";
}
}
else
{
// обращение к файлу произошло не через AJAX-запрос
echo "Куда прёшься???";
}
?>
// кодировка страницы (очень частая проблема)
header('Content-Type: text/html; charset=utf-8');
// защита от дурака
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
// юзер проверяет через AJAX-запрос
// получаем введённый логин
$login = $_REQUEST[login];
// ищем ео в БД
$result = "SELECT COUNT(login) FROM user_table WHERE login = '$login'";
$sql = mysql_query($result, $db);
$result_array = mysql_fetch_array($sql);
$cnt = $result_array["0"];
// проверяем наличие в БД
if ($cnt == 0)
{
echo "Свободен";
}
else
{
echo "Занят";
}
}
else
{
// обращение к файлу произошло не через AJAX-запрос
echo "Куда прёшься???";
}
?>
Резкультат выполнения PHP-скрипта магическим образом переместится в div с id=logincheck. Также следует позаботиться о том, чтоб PHP-скрипту была возможность коннектиться к БД. Т.е. нужно в нём прописать что-то наподобие:
Код:
$db = mysql_connect("$database_host", "$database_user", "$database_password");
mysql_select_db("$database_name", $db);
mysql_select_db("$database_name", $db);
Вот вроде и всё...
Код:
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
[/COLOR][/COLOR]будет пахать на всех браузерах?[COLOR=#000000][COLOR=#007700]
[/COLOR][/COLOR]
Вот вырезка из переводного материала о jQuery:
Цитата:
В различных библиотеках, особенно использующих шаблон MVC, часто необходимо знать, как была вызвана страница – открыли ее в браузере или запросили через AJAX? При запросе с помощью технологии AJAX устанавливается HTTP-заголовок HTTP_X_REQUESTED_WITH со значением “XmlHTTPRequest”. Таким образом, в РНР, например, можно узнать, вызвана ли страница с помощью AJAX так:
Код:
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
// выполняем соответствующий код
}
{
// выполняем соответствующий код
}
Пробовал в опере 9, ие 6 и 7 версии, огнелисе 2 версии и сафари. Везде работает :)
Где можно скачать этот jQuery ?
Сижу, разбираюсь.
Все замечательно работает, НО .. начал таким образом делать новости с прокруткой, возникла проблемка.. Новости открываються в корявой кодировке, оно и понятно..
делаю
header('Content-Type: text/html; charset=utf-8');
Никаких изменений =((
Как с этим можно бороться?
попробывал utf8_encode и utf8_decode ... Похоже на правду, но все равно иероглифы.
Понял =) ... все нормально после utf8_encode, но показывает в ISO-8859-1 осталось перевести в Windows-1251
iconv. На реальных серверах обычно нормально всё настроено, такое не глючит.
Call to undefined function: iconv()
=((
При этом PHP Version 4.4.4
Подключить php_iconv.dll в pnp.ini