gpt4 book ai didi

javascript - 使用 e.preventDefault() 的联系表单;不现场工作

转载 作者:行者123 更新时间:2023-12-03 11:26:31 24 4
gpt4 key购买 nike

更新 - 联系表格可在此 URL 找到。 .

我正在尝试使用此 tutorial 让以下联系表单发挥作用。 .

我设法使用 apache 网络服务器让一切在我的计算机上按预期工作。将文件上传到在线网站后,ajax 功能无法启动。我似乎 e.preventDefault(); 在上传后停止工作,并且表单被重定向到新网站,而不仅仅是在不重新加载的情况下在网站上进行处理。

我也一直在尝试使用 return false; 而不是 e.preventDefault(); 但没有成功。

她是我的代码:

.html

<form method="post" action='mail/mail.php'>
<label>Name</label>
<input name="name" id="name" placeholder="Name.." required="true" class="input-field">

<label>Mail</label>
<input type="email" name="email" placeholder="Mail.." required="true" class="input-field">

<label>Msg</label>
<textarea name="message" id="message" class="textarea-field" required="true"></textarea>

<input type="submit" id="submit" name="submit" value="Send">
</form>

<div id="loading">
Sender melding...
</div>
<div id="success">
</div>

.js

$(function(){
$('form').submit(function(e){
var thisForm = $(this);
//Prevent the default form action

//return false;
e.preventDefault();

//Hide the form
$(this).fadeOut(function(){
//Display the "loading" message
$("#loading").fadeIn(function(){
//Post the form to the send script
$.ajax({
type: 'POST',
url: thisForm.attr("action"),
data: thisForm.serialize(),
//Wait for a successful response
success: function(data){
//Hide the "loading" message
$("#loading").fadeOut(function(){
//Display the "success" message
$("#success").text(data).fadeIn();
});
}
});
});
});
})

请帮忙!

最佳答案

那是因为你的JS缺少结束});。请检查此演示,以确认默认操作确实被阻止并且 ajax 确实启动。但是,我本来期待一个 POST,但我看到一个 OPTIONS 请求。

注意:为元素指定 nameid 属性值为 submit 是不好的做法。例如,您无法使用 JavaScript 通过默认表单提交 - this.submit() 或 $('form')[0].submit() 来提交表单,而不收到错误 。 ..submit() 不是一个函数...

$(function() {
$('form').submit(function(e) {
var thisForm = $(this);
//Prevent the default form action

//return false;
e.preventDefault();

//Hide the form
$(this).fadeOut(function() {
//Display the "loading" message
$("#loading").fadeIn(function() {
//Post the form to the send script
$.ajax({
type: 'POST',
url: thisForm.attr("action"),
data: thisForm.serialize(),
//Wait for a successful response
success: function(data) {
//Hide the "loading" message
$("#loading").fadeOut(function() {
//Display the "success" message
$("#success").text(data).fadeIn();
});
}
});
});
});
});
}); // <==== MISSING THIS
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form method="post" action='mail/mail.php'>
<label>Name</label>
<input name="name" id="name" placeholder="Name.." required="true" class="input-field">

<label>Mail</label>
<input type="email" name="email" placeholder="Mail.." required="true" class="input-field">

<label>Msg</label>
<textarea name="message" id="message" class="textarea-field" required="true"></textarea>

<input type="submit" id="submit" name="submit" value="Send">
</form>

<div id="loading">
Sender melding...
</div>
<div id="success">
</div>

关于javascript - 使用 e.preventDefault() 的联系表单;不现场工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897715/

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