Я пытаюсь отправить две отдельные формы, используя одну кнопку. После нескольких дней исследований я пришел к выводу, что я не могу этого сделать без использования AJAX.
Первая форма отправляется на маршрутизатор Mikrotik (таким образом, пользователь получает доступ к HotSpot), который проверяет имя пользователя и пароль. Страница входа в Mikrotik требует этого «пути»: $ (только для входа по ссылке).
Вторая форма должна отправить электронное письмо, введенное пользователем, но она должна отправить его после cca. 0,5 секунды, поскольку пользователю требуется примерно столько же времени, чтобы получить доступ в Интернет.
Пока что я столкнулся с двумя ошибками, которые не могу исправить:
1-й: в этой строке: <input type="button" value="Submit" id="submit" onclick="SendAjax()"> <br />
- Uncought ReferenceError: SendAjax не определен
2cnd: в этой строке url: "$(link-login-only)",
- Uncought SyntaxError: Unexpected Identifier
Полный код:
!DOCTYPE html>
<html>
<head>
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous">
</script>
<title>Post with delay</title>
</head>
<body>
<form name="hotspot" action="$(link-login-only)" method="post" id="hotspot"
$(if chap-id) onSubmit="return doLogin(); return false;" $(endif)>
<input type="hidden" name="dst" value="$(link-orig)" />
<input type="hidden" name="popup" value="true" />
<input type="hidden" name="username" type="text" value="username" />
<input type="hidden" name="password" type="password" value="password" />
</form>
<form name="mail" action="http://myserveraddress/verifysanitize.php" method="post" id="mail">
<h1>Hotspot</h1>
<h2>To gain internet access, enter your email.</h2>
<br />
<input type="text" name="email" autofocus="autofocus">
<br />
<input type="button" value="Submit" id="submit" onclick="SendAjax()"> <br />
</form>
</body>
<script rel="javascript" type="text/javascript">
function SendAjax() {
var email = $("#email").val();
// Check if fields are empty
if (email=="") {
alert("Please enter your email.");
}
// AJAX code to submit form
else {$.ajax({
type: "POST"
url: "$(link-login-only)",
data: $("#hotspot").serialize(),
});
function callback(){
$.ajax ({
url: $("#mail").attr('action'),
}
});
}
setTimeout(callback(), 1000);
}
}
</script>
</html>
Посмотрев код перед публикацией, можно ли было бы добавить скрытую кнопку в 1-ю форму и использовать ajax для отправки 1-й формы до того, как будет задержка 0,5 с, а затем выполнить вторую форму?
setTimeout(callback(), 1000);
‹--- ошибка. Этот код неверен, он не ждет 1 секунду, чтобы выполнить обратный вызов - person epascarello   schedule 13.12.2019