Jquery 不发两次火
目标:Jquery 不发两次火,jquery,ajax,asp.net-mvc,Jquery,Ajax,Asp.net Mvc,目标: 按下按钮时,文本框中的值应在公式下方显示一次 问题: 当我点击按钮时,数据将显示两次 我在下面试过了,但没用 $('#myform').one('submit', clickHandler); var clickHandler = function (event) { event.preventDefault(); $("#divProcessing").show(); $.ajax({ url: $(this).attr("action"
按下按钮时,文本框中的值应在公式下方显示一次 问题:
当我点击按钮时,数据将显示两次 我在下面试过了,但没用
$('#myform').one('submit', clickHandler);
var clickHandler = function (event) {
event.preventDefault();
$("#divProcessing").show();
$.ajax({
url: $(this).attr("action"),
type: 'POST',
async: true,
data: $(this).serialize(),
dataType: 'json',
success: function (resp) {
// Hide the "busy" gif:
$("#divProcessing").hide();
// Do something useful with the data:
$("<h3>" + resp.FirstName + " " + resp.LastName + "</h3>").appendTo("#divResult");
}
});
$('myform')。一个('submit',clickHandler);
var clickHandler=函数(事件){
event.preventDefault();
$(“#divProcessing”).show();
$.ajax({
url:$(this.attr(“操作”),
键入:“POST”,
async:true,
数据:$(this).serialize(),
数据类型:“json”,
成功:功能(resp){
//隐藏“忙碌”gif:
$(“#divProcessing”).hide();
//对数据执行一些有用的操作:
$(“”+resp.FirstName+“”+resp.LastName+“”)。附加到(“#divResult”);
}
});
}
信息:*使用ASP.net mvc和JQuery
*这个代码的基础来自这个
命名空间WebApplication3.控制器
{
公共类HomeController:控制器
{
公共行动结果索引()
{
返回视图();
}
关于()的公共行动结果
{
ViewBag.Message=“您的应用程序描述页。”;
返回视图();
}
公共行动结果联系人()
{
ViewBag.Message=“您的联系人页面。”;
返回视图();
}
[HttpPost]
public ActionResult LongRunningDemoProcess(DemoViewModel模型)
{
睡眠(1000);
返回Json(模型,“Json”);
}
}
公共类DemoViewModel
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
}
输入您的姓名并提交:
@使用(Html.BeginForm(“LongRunningDemoProcess”,“Home”,FormMethod.Post,new{id=“myform”,name=“myform”}))
{
@Html.TextBoxFor(m=>m.FirstName)
@Html.TextBoxFor(m=>m.LastName)
}
//我们希望在服务器进程运行时显示这一点:
正在处理,请稍候
//我们希望在此处显示提交的结果:
$(文档).ready(函数(){
//在加载时隐藏“忙”Gif:
$(“#divProcessing”).hide();
//将单击处理程序附加到“提交”按钮:
$(“#进程”)。单击(函数(){
$('#myform')。提交();
});
//处理表单提交事件,并发出Ajax请求:
$(“#myform”)。在(“提交”上,函数(事件){
event.preventDefault();
//显示“忙碌”Gif:
$(“#divProcessing”).show();
var url=$(this.attr(“操作”);
var formData=$(this.serialize();
$.ajax({
url:url,
类型:“POST”,
数据:formData,
数据类型:“json”,
成功:功能(resp){
//隐藏“忙碌”gif:
$(“#divProcessing”).hide();
//对数据执行一些有用的操作:
$(“”+resp.FirstName+“”+resp.LastName+“”)。附加到(“#divResult”);
}
})
});
});
在“提交”按钮上不需要单独的“单击”处理程序。我怀疑这就是它发射两次的原因:
$('#process').click(function () {
$('#myform').submit();
});
您明确告知要提交的表单,但在表单中按任何带有
type=“submit”
的按钮都会自动触发提交事件,无需额外代码。因此,您实际上是在订购额外提交的表单。删除click处理程序,它应该只提交一次。我删除了代码“$('#process')。单击(function(){$('#myform')。submit(););”,一切正常谢谢您的帮助!
$('#process').click(function () {
$('#myform').submit();
});