C# Ajax jQuery并不总是在控制器上执行操作
我在ASP.NET MVC 3(C#)中创建了下面的控制器方法,它返回一个PartialView:C# Ajax jQuery并不总是在控制器上执行操作,c#,javascript,jquery,asp.net,ajax,C#,Javascript,Jquery,Asp.net,Ajax,我在ASP.NET MVC 3(C#)中创建了下面的控制器方法,它返回一个PartialView: public ActionResult InsertEmail(long idPerson) { PersonEmailViewModel mail = new PersonEmailViewModel(); mail.email.Person_idPerson = idPerson; return PartialView(mail);
public ActionResult InsertEmail(long idPerson)
{
PersonEmailViewModel mail = new PersonEmailViewModel();
mail.email.Person_idPerson = idPerson;
return PartialView(mail);
}
我需要在提交表单上执行的方法是:
[HttpPost]
public ActionResult InsertNewEmail(PersonEmail mail)
{
mail.idPersonEmail = mail.Insert(mail);
return Json(mail);
}
My partialView包含以下代码:
@model PlatformLib_MySql.BLL.Person.PersonEmailViewModel
<form action="" id="frmNewEmail" method="post">
<div>
E-mail: @(Html.TextBoxFor(m => m.email.email))
@(Html.HiddenFor(m => m.email.Person_idPerson))
<input type="submit" value="Insert" id="btnSubmitMailInsert" />
<input type="button" value="Cancel" id="btnCancelMailInsert" />
</div>
</form>
我的问题集中在Ajax请求上。我很少能做到“快乐方式”,在提交时单击,事件在jQuery上激活,调用方法“submitNewEmail()”,该方法调用Ajax,在控制器上执行该方法并成功通过。但事实并非如此。。。它总是以失败的方式返回,这不是因为控制器方法返回的错误,而是因为ajax不能正常运行,不能在控制器上执行该方法,即使插入了断点(在VS2010上)。
在我发布的这段JS代码中,我尝试了另一种方法来解决这个问题,但没有成功。
原代码为:
jQuery.ajax({
url: '/Person/InsertNewEmail',
data: mail,
type: 'POST',
dataType: 'json',
cache: false,
success: function (result) {
debugger;
jQuery("#tblEmail").append("<tr><td>Email inserido</td></tr>");
},
error: function () {
debugger;
alert("Erro ao inserir e-mail.");
}
});
jQuery.ajax({
url:“/Person/InsertNewEmail”,
数据:邮件,
键入:“POST”,
数据类型:“json”,
cache:false,
成功:功能(结果){
调试器;
jQuery(“#tblEmail”).append(“Email inserido”);
},
错误:函数(){
调试器;
警报(“Erro ao inserir电子邮件”);
}
});
我暂时保留了“console.log(msg)”来解决这个问题
你们中有人能告诉我发生了什么,或者我的错误在哪里吗?我发现了问题。一切正常,但一些细节破坏了代码:window.location.reload() 我在代码中做了一些更改,看起来是这样的:
jQuery.ajax({
url: '/Person/InsertNewEmail',
data: mail,
type: 'POST',
dataType: 'json',
cache: false
}).done(function (data) {
// Do something
});
另一种方法也是正确的,唯一相关的变化是:
jQuery("#btnSubmitMailInsert").click(function () {
event.preventDefault();
submitNewEmail();
// window.location.reload // -> Commented for testing and everything worked fine.
});
谢谢你试着帮助我。这对我帮助很大。
event.preventDefault()
将其移动到jQuery(“#btnsubmitmailsert”)。单击(函数(){
可以尝试将ajax请求的内容类型设置为“application/json”和json.Stringify()吗在将其转换为json字符串的数据中。@Murali这仅仅是一个细节。@Saranya是的,但结果是相同的:-(您能提供PersonEmail类的类定义吗..只是为了检查一下
jQuery("#btnSubmitMailInsert").click(function () {
event.preventDefault();
submitNewEmail();
// window.location.reload // -> Commented for testing and everything worked fine.
});