[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отправка формы без перезагрузки страницы
Игорь_Vasinsky
Отправка формы без перезагрузки страницы с использование JQuery
Один из возможных вариантов с использованием функции ajaxForm(), ajaxSumbit()

Цитата
Плагин jQuery Form позволяет не только сделать новые ajax-формы, но и довольно просто «проапгрейдить» уже существующие формы таким образом, чтобы их можно было использовать вместе с Ajax. Основные методы, ajaxForm и ajaxSubmit, собирают информацию из элементов формы, поддерживают многочисленные опции, использование которых даст полный контроль над передачей данных.


При использовании данного метода, данные из формы буду передоваться без перезагрузки страницы,
для этого я буду использовать jQuery + plugin jquery.form.js http://malsup.com/jquery/form/

Для примера мы будем использовать форму для добавления комментариев на сайт, (а вообще у этого метода очень широкая область применения).

Итак у нас есть страница с формой form.html

<html>
<head>
<title>
Отправьте нам свой комментарий</title>
<script
language="javascript" src="/jquery.min.js"></script>
<script
language="javascript" src="/jquery.form.js"></script>
<script
language="javascript" src="/myscript.js"></script>
</head>
<body>
<h1>
Добавить комментарий:</h1>
<form
id="myform" action="/addcomment.php" method="POST">
Ваше имя: <input type="text" name="user"/><br />
<textarea
name="comment"></textarea><br />
<input
type="submit" value="Отправить"/>
</form>

<!--В этот блок мы будем выводить результат выполнения обработчика PHP-->
<div id="result"></div>
</body>
</html>


Обработчик формы addcomment.php:
<?php
//Обрабатываем $_POST
//Проверяем нажатие simbit
//Записываем в БД или в файл

//Выводим сообщение об удачном завершении
//Или
//Сообщаем пользователю об ошибке

?>


А вот и "волшебный" скрипт, который и запустит наш обработчик php, без перезагузки страницы

JS скрипт myscript.js

1 вариант с ajaxForm()

$(document).ready(function() { 

//Вешаем на нашу форму функцию ajax.Form()
$('#myform').ajaxForm({
//Результат работы обработчика выведем в нашем div
target: '#result',
//Укажем путь и сам обработчик, можно неиспользовать - если в самой форме явно указан обработчик в action
url: '/addcomment.php',
//На время обработки данных обработчикам, до окончания обрабодки повесим анимацию (допустим gif - loading...)
beforeSend: function()
{
$('#result').html("<img src='/images/load.gif' border='0'/>")
},
//Успешное окончание обработки
success: function() {
$('#result').fadeIn('slow');
}
//Так же есть доп. опции - ссылка ниже
});
});

2 вариант с ajaxSumbit()

$(document).ready(function() { 

var option{
target: '#result',
url: '/addcomment.php',
beforeSend: function()
{
$('#result').html("<img src='/images/load.gif' border='0'/>")
},
success: function()
{
$('#result').fadeIn('slow');
}
}

$("#myform").ajaxSubmit(options);
});
});



В результате: как обработчик вернёт результат, а myscript.js вставит его в <div id="result"></div>


Gif-анимацию можно подобрать здесь http://www.ajaxload.info/
Подробно о применении плагина можно почитать на http://jquery.malsup.com/form/

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.