JavaScript — функция protectDefault не работает с обработкой Ajax / Form

В следующей форме я пытался пройти через функцию Ajax, а не через действие / PHP.

    <section class="registration">
<form name="userRegistration" method="post" id="userregister" action="install.php">

<label for="username">Username</label>
<input type="text" name="username" id="username" value="admin"><label for="username">Author Name</label>
<input type="text" name="authname" id="authname" placeholder="Example: John Doe"><label for="password">Password</label>
<input type="password" name="pass" id="pass" value=""><label for="sitetitle">Site Title</label>
<input type="text" name="sitetitle" id="sitetitle" ><label for="sitedesc">Site Description</label>
<input type="text" name="sitedesc" id="sitedesc" ><label for="server">Server</label>
<input type="text" name="server" id="server" placeholder="Example: localhost"><label for="database">Database</label>
<input type="text" name="database" id="database" ><label for="dbun">DB Username</label>
<input type="text" name="dbun" id="dbun" ><label for="dbpw">DB Password</label>
<input type="password" name="dbpw" id="dbpw" >

<input type="submit" />
</form>

Ниже приведен мой Ajax-код для этого.

$(document).on('submit', '#userregister form', function(e) {
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
success: function(html) {
alert('ok');
}
});
e.preventDefault();

});

Но вместо того, чтобы предотвратить дефолт, форма, кажется, полностью игнорирует все и пропускает через действие, и я не слишком уверен, почему. Реальные функции install.php работают правильно, но я просто озадачен, почему он не проходит через Ajax.

0

Решение

preventDefault остановил всплывающее событие, но отменил собственное событие. Вы должны вернуться false от вашей функции для отмены поведения по умолчанию (открытие формы URL):

$(document).on("submit", "#userregister form", function (e) {
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
success: function(html) {
alert('ok');
}
});
e.preventDefault();
return false;
});

Также лучше практиковать обработку кнопки sumbit click, но создайте событие «отправить».

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]