Jquery 为什么需要e

Jquery 为什么需要e,jquery,asp.net,ajax,callback,form-submit,Jquery,Asp.net,Ajax,Callback,Form Submit,我正在使用下面的代码发送电子邮件。如果我删除e.preventDefault();,它将不起作用;。为什么我需要禁用表单的默认提交行为?没有e.preventDefault();,我如何实现它 $(文档).ready(函数(){ $('#divload').hide(); $(“#约会”)。提交(功能(e){ e、 预防默认值(); var serviceURL='WebService.asmx/SendMail'; 变量名称=$(“#fname”).val(); var Email=$(“#

我正在使用下面的代码发送电子邮件。如果我删除e.preventDefault();,它将不起作用;。为什么我需要禁用表单的默认提交行为?没有e.preventDefault();,我如何实现它


$(文档).ready(函数(){
$('#divload').hide();
$(“#约会”)。提交(功能(e){
e、 预防默认值();
var serviceURL='WebService.asmx/SendMail';
变量名称=$(“#fname”).val();
var Email=$(“#Email”).val();
var电话=$(“#电话”).val();
var Comment=$(“#Comment”).val();
if($(“#fname”).val().length==0){
警报(“请输入名称”);
$(“#fname”).focus();
返回false;
}
if($(“#email”).val().length==0){
提醒(“请输入您的电子邮件地址”);
$(“#电子邮件”).focus();
返回false;
}
如果(Email.indexOf(“@”)=-1){
提醒(“请输入您的电子邮件地址”);
$(“#电子邮件”).focus();
返回false;
}
如果(Email.indexOf(“.”)=-1){
提醒(“请输入您的电子邮件地址”);
$(“#电子邮件”).focus();
返回false;
}
$('#divload').show();
$.ajax({
类型:“POST”,
url:serviceURL,
数据:“{”姓名“+”姓名“,”地址“+”电子邮件“,”电话“+”电话“,”评论“+”评论“}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:successFunc,
错误:errorFunc
});
函数successFunc(数据、状态){
//警报(“已发送邮件!”);
$('#divload').hide();
window.location=“contat submit.php”;
}
函数errorFunc(){
//警报(“错误”);
}
});
});
联系方式
全名:



电子邮件地址:


电话:


您的评论:



event.preventDefault()方法停止
元素的默认操作

相反,你可以使用

例如,单击的锚定不会将浏览器带到新的URL。我们可以使用event.isDefaultPrevented()确定此事件触发的调用是否调用了此方法


如果不使用
e.preventDefault()
,表单提交的默认行为将触发。它会将浏览器发送到表单的
操作
属性,如果您不需要,浏览器将消失。

此代码依赖于禁用表单的默认提交行为,因为表单数据是通过ajax发送的(而不是GET或POST请求,这也会使浏览器导航到
About.aspx

无需
e.preventDefault()即可实现false


或者不使用ajax,在这种情况下,您可以在服务器端使用:
Page.Request.QueryString[“htmlElementName”]

获取POST数据,这意味着您根本不需要提交表单。如果发送电子邮件后仍希望页面重定向到about.aspx,请将成功功能更改为:

function successFunc(data, status) {
    $('#divLoading').hide();
    window.location = "about.aspx";
}
如果您允许表单的默认post行为,那么表单将在ajax请求完成之前发布,并将干扰您发送的电子邮件


作为补充说明,您有两个名为“约会”的表单,这可能会给您带来一些混乱。您的代码引用的是第一个,而不是第二个。

因为表单是使用
$.ajax(…)
提交的。如果没有
e.preventDefault()
表单将提交两次,页面将重定向到
about.aspx
function successFunc(data, status) {
    $('#divLoading').hide();
    window.location = "about.aspx";
}