Здравствуйте. Сейчас разбираюсь с валидацией формы.
Раньше делала на стороне клиента с помощью Jquery Validation Plugin.
Сейчас также обрабатываю данные на стороне сервера.
Вот моя форма:
<body>
<form id="form" method="post" action="javascript:void(0);" onsubmit="ajax()">
<p>Ваше имя</p>
<p><input type="text" id="name" name="name" class="name" value="" /></p>
<p>Ваш email</p>
<p><input type="text" name="email" class="email" value="" /></p>
<p>Тема</p>
<p><input type="text" name="subject" class="subject" value="" /></p>
<p>Сообщение</p>
<p><textarea name="message" class="message"></textarea></p>
<p><input type="submit" name="send" class="send" value="send"></p>
</form>
<div id="results"></div>
<div id="res"></div>
</body
После нажатия на submit выполняется фцнкция ajax():
function ajax() { //Ajax отправка формы
var msg = $("#form").serialize();
$.ajax({
type: "POST",
url: "send.php",
data: msg,
success: function(data) {
$("#results").html(data);
if($("#results").val()=="SUCCESS VALIDATION"){
addData();
}
},
error: function(xhr, str){
alert("Возникла ошибка!");
}
});
}
Если send.php вернул SUCCESS VALIDATION, то вызываем функцию addData().
Также есть валидация на стороне клиента:
$(document).ready(function(){ //Валидация формы
$( "#form" ).validate({
rules:{
name:{
required: true
},
subject:{
required: true
},
email:{
required: true
},
message:{
required:true
}
},
messages:{
name:{
required: "This field is required"
},
subject:{
required: "This field is required"
},
email:{
required: "This field is required"
},
message:{
required: "This field is required"
}
},
submitHandler: function(form) {
addData();
}
});
$("#form input").click(function () {
$("#res").text("");
});
});
И также при успешной валидации выполняется функция addData().
Не могу понять, в случае успешной валидации и на сервере, и на клиенте , addData() будет вызываться 2 раза? А если я в ней добавляю записи в БД, то получится, что одно и то же пишу 2 раза.
Как поступить в данном случае?
Заранее спасибо за помощь!