gpt4 book ai didi

javascript - 表单提交前的 GET 请求

转载 作者:行者123 更新时间:2023-12-01 00:13:43 25 4
gpt4 key购买 nike

我有一个类似于下面的页面。当用户按下表单的提交按钮时,应该对 API 执行 ping 操作,如果 GET 请求不成功,则不应提交表单。但是,我发现 GET 请求总是失败,并且错误消息为空白。我的猜测是,在 GET 请求有时间完成之前,页面就被重定向了。

<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://code.jquery.com/jquery-1.11.2.js" integrity="sha256-WMJwNbei5YnfOX5dfgVCS5C4waqvc+/0fV7W2uy3DyU=" crossorigin="anonymous"></script>
</head>
<body>
<form action="POST_URL" id="primary-form" method="POST">
<input type="submit" id="submit-button"/>
<input type="text" name="text-field" id="text-field">
</form>
<script>
$('#primary-form').submit(function(event) {
$.ajax({
type:"GET",
url: // API_URL //,
success: function(response) {
console.log("success");
console.log(response);
},
error: function(error) {
event.preventDefault();
console.log("error");
console.log(error);
},
});
})
</script>
</body>
</html>

我可以按如下方式修改javascript,在这种情况下GET请求成功。但是,我不知道如何逆转 event.preventDefault()

    <script>
$('#primary-form').submit(function(event) {
event.preventDefault();
$.ajax({
type:"GET",
url: // API_URL //,
success: function(response) {
console.log("success");
console.log(response);
// want to perform default action
},
error: function(error) {
console.log("error");
console.log(error);
},
});
})
</script>

最佳答案

其中一个选项是存储 ajax 调用的结果,并在成功时重试调用。

在下面的示例中,有一个 success 变量,当调用成功时,该变量设置为 true;如果调用失败,则设置为 false。

let success = false;
$('#primary-form').submit(function(event) {
console.log(success);
if (!success) {
event.preventDefault();
$.ajax({
type: "GET",
url: "https://httpbin.org/get",
success: function(response) {
success = true;
//submit the form again
$("#submit-button").click();
},
error: function(error) {
success = false;
console.log("error");
console.log(error);
},
});
}
})
<html lang="en">

<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://code.jquery.com/jquery-1.11.2.js" integrity="sha256-WMJwNbei5YnfOX5dfgVCS5C4waqvc+/0fV7W2uy3DyU=" crossorigin="anonymous"></script>
</head>

<body>
<form action="POST_URL" id="primary-form" method="POST">
<input type="submit" id="submit-button" />
<input type="text" name="text-field" id="text-field">
</form>
</body>

</html>

关于javascript - 表单提交前的 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59911890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com