Просто, чтобы помочь обновить этот пост.
Инкапсулировать с помощью:
$(document).ready(function() { ALL YOUR CODE GOES HERE }
Удалить submitHandler из правил:
rules: {
name: {required: true},
email: {required: true},
subject: {requred: true}
},
submitHandler: function(form) {.....
Добавить кеш:false, чтобы не допустить возврата формой браузера кешированного содержимого:
request = $.ajax({
type: "POST",
cache: false,
url: "<?php bloginfo("template_directory"); ?>/contact/process.php",
data: $(form).serialize(),
timeout: 3000
});
Используйте done () и fail () вместо success и error сейчас:
// Called on success.
request.done(function(msg) {
alert('works');
});
// Called on failure.
request.fail(function (jqXHR, textStatus, errorThrown){
alert('failed');
// log the error to the console
console.error(
"The following error occurred: " + textStatus, errorThrown
);
});
Вот и все:
$(document).ready(function() {
$("#contact").validate({
rules: {
name: {required: true},
email: {required: true},
subject: {requred: true}
},
submitHandler: function(form) {
request = $.ajax({
type: "POST",
cache: false,
url: "<?php bloginfo("template_directory"); ?>/contact/process.php",
data: $(form).serialize(),
timeout: 3000
});
// Called on success.
request.done(function(msg) {
alert('works');
});
// Called on failure.
request.fail(function (jqXHR, textStatus, errorThrown){
alert('failed');
// log the error to the console
console.error(
"The following error occurred: " + textStatus, errorThrown
);
});
return false;
}
});
});
Добавьте no-cache в заголовок process.php, чтобы предотвратить кэширование содержимого в браузере:
<?=header("cache-control: no-cache");?>