Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ajax jQuery并不总是在控制器上执行操作_C#_Javascript_Jquery_Asp.net_Ajax - Fatal编程技术网

C# Ajax jQuery并不总是在控制器上执行操作

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);

我在ASP.NET MVC 3(C#)中创建了下面的控制器方法,它返回一个PartialView:

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.
});