Бортовой журнал Ктулху

Простой ajax на jQuery

Шпаргалка. Простой и понятный ajax с использованием jQuery и php-обработчика и для примера этим скриптом регистрируется пользователь в битриксе.

HTML

<a href="#" class="write_review">Написать</a>

JS

При клике по элементу с классом write_review вызывается ajax.

$('.write_review').click(function(){

 $.ajax({
url : 'action.php',
 type : 'POST',
 data : {
 'user' : 'Vasiliy',
},
 // dataType:'json',
 success : function(data) { 
 // alert('Data: '+data);
 },
 error : function(request,error)
 {
 // alert("Request: "+JSON.stringify(request));
 }
 });
})

Еще можно сериализовать данные перед отправкой.

$.ajax({
 url : '/ajax/form.php',
 type : 'POST',
 data : {
 'data' : $("form#orderform").serialize(),
 },
 success : function(data) 
 {
},
 });

В обработчик будет приходить такая строка:

screenshot 2016 08 11 09 52 54 1

Обработчик

Обработчик получает имя пользователя и регистрирует его.

Если пользователь зарегистрирован, выдает соответствующее сообщение.

if($_POST['user']):
global $USER;
if (!$USER->IsAuthorized()):
// echo "вы не авторизованы";
 $name = $_POST['name'];
 $tmp_pass = rand().rand().rand().rand().rand().rand().rand().rand().rand().rand();
$email = $name."@".SITE_SERVER_NAME;
 $arResult = $USER->Register($tmp_name, "", "", $tmp_pass, $tmp_pass, $email);
// ShowMessage($arResult); // выводим результат в виде сообщения
// echo $USER->GetID(); // ID нового пользователя
 echo "OK";
else:
// echo "вы авторизованы";
 echo "AUTHORIZED";
endif;
endif;

Отправка полей формы

Это тоже ajax но без ответа от обработчика. Отправляем сериализованый массив полей формы <form id="orderform"> на обработчик.

$.post('/ajax/form.php', $('form#orderform').serialize());

Не перезагружать страницу

При сабмите формы может перезагружаться страница. Чтобы препятствовать этому, добавить в скрипт или preventDefault или return false после отработки логики.

$('form#quick-odr').submit(function(e){
 e.preventDefault();
 $.ajax({
 url : '/ajax/form.php',
 type : 'POST',
 data : {
 'data' : $("form#orderform").serialize(),
 },
 success : function(data)
 { 
 // alert('ok');
 },
 });
 return false;
 });