Javascript 将数据保存到SQL SERVER数据库时出现问题

Javascript 将数据保存到SQL SERVER数据库时出现问题,javascript,angularjs,asp.net-mvc-4,Javascript,Angularjs,Asp.net Mvc 4,我是新来的,所以如果我做错了什么,请告诉我,好吗? 我在网络开发方面也是个新手 我在ASP.NET中的post方法有问题 请不要介意按钮和方法的名称,好吗?我是巴西人,他们的名字都是葡萄牙语 我有一个submit按钮,它调用一个名为AdicionarCliente()的ng click(Angularjs)方法 查看 <div> <input type="submit" class="btn btn-info" value="Salvar" ng

我是新来的,所以如果我做错了什么,请告诉我,好吗? 我在网络开发方面也是个新手

我在ASP.NET中的post方法有问题

请不要介意按钮和方法的名称,好吗?我是巴西人,他们的名字都是葡萄牙语

我有一个submit按钮,它调用一个名为AdicionarCliente()的ng click(Angularjs)方法

查看

     <div>
           <input type="submit" class="btn btn-info" value="Salvar" ng-click="AdicionarCliente()"/>
     </div>
在这部分之前,它工作得很好。每次我点击submit按钮时,它都会出现在这里,并在变量“promisse”中输入函数

现在-问题在于:

控制器

     [HttpPost]
    public JsonResult AdicionarCliente(string NomeCliente, string Telefone1Cliente)
    {
        var db = new RexsoftEntities();
        db.CLIENTES.Add(new CLIENTES() { NOME = NomeCliente,
                                         TELEFONE1 = Telefone1Cliente});

            db.SaveChanges();

        var Clientes = db.CLIENTES.ToList();
       return Json(Clientes, JsonRequestBehavior.AllowGet);
    }
我第一次点击submit按钮时,这里的代码会一直运行到db.CLIENTES.Add部分代码,然后它不会运行db.SAVECHANGES()或这里的其余代码。第二次,它就像一个符咒。问题就发生在第一次提交时

由于控制器返回不正确,Javascript代码的最后一部分也不会运行。本部分:

    window.location.href = "CadastroPet";
                return false;
有人能帮我吗

(所有视图都在此分区内。)

    <div ng-controller="AdicionarClientesController">

)

更新


我删除了submit按钮的类型,并放置了简单的按钮类型。它现在似乎起作用了。那我怎么提交表格呢

首先,根据EF最佳实践,尝试使用(){}块将db操作包装在
中。所以你的控制者洛克喜欢

[HttpPost]
public JsonResult AdicionarCliente(string NomeCliente, string Telefone1Cliente)
{
    var Clientes = new CLIENTES();
    using(var db = new RexsoftEntities()) 
    {
       var _Clientes = new CLIENTES() 
       { 
           NOME = NomeCliente,
           TELEFONE1 = Telefone1Cliente
       };
       db.CLIENTES.Add(_Clientes);
       db.SaveChanges();
       Clientes = db.CLIENTES.ToList();
    }
    return Json(Clientes, JsonRequestBehavior.AllowGet);
}
其次,在javascript方面,您使用的是angularjs。window.location.href将无法在角度模式下工作(请参阅和)。您必须使用$window服务(源:)或$location服务(源:)。同时避免使用
返回false

在您的情况下,以下选项将起作用

promisse.then(function () {
    $location.path('/CadastroPet');
});

首先,根据EF最佳实践,尝试使用(){}
块将db操作包装在
中。所以你的控制者洛克喜欢

[HttpPost]
public JsonResult AdicionarCliente(string NomeCliente, string Telefone1Cliente)
{
    var Clientes = new CLIENTES();
    using(var db = new RexsoftEntities()) 
    {
       var _Clientes = new CLIENTES() 
       { 
           NOME = NomeCliente,
           TELEFONE1 = Telefone1Cliente
       };
       db.CLIENTES.Add(_Clientes);
       db.SaveChanges();
       Clientes = db.CLIENTES.ToList();
    }
    return Json(Clientes, JsonRequestBehavior.AllowGet);
}
其次,在javascript方面,您使用的是angularjs。window.location.href将无法在角度模式下工作(请参阅和)。您必须使用$window服务(源:)或$location服务(源:)。同时避免使用
返回false

在您的情况下,以下选项将起作用

promisse.then(function () {
    $location.path('/CadastroPet');
});

我删除了submit按钮的类型,并放置了简单的按钮类型。它现在似乎起作用了。
我创建了另一种方法来验证我的表单,它使用了我提到的同一个js脚本。如果不符合标准,我会返回一条消息和一条错误的声明

我删除了submit按钮的类型,并将其放在简单的按钮类型上。它现在似乎起作用了。

我创建了另一种方法来验证我的表单,它使用了我提到的同一个js脚本。如果不符合标准,我会返回一条消息和一条错误的声明

当数据库插入发生时,可能会发生某种异常。如果在Visual Studio中进行调试,它是否会中断执行并报告错误?@user3127450:如果它正在引发异常,请检查异常/错误?请在这里发布错误日志。这样人们才能回答@阿迪森:没有。这是奇怪的部分。当我检查数据库时,这些值都在那里,所以它保存了。在这种情况下,它必须运行db.SaveChanges。你的问题在别的地方。当浏览器从$.post请求返回时,是否在开发人员控制台中报告任何错误?@ADyson Yes man。它正在运行。真奇怪。尽管我在运行调试时总是使用步骤切换,但它从未在保存更改时停止。当我放一个断点时,它就停在那里了。好吧,但我试着检查IE控制台是否有任何错误,但什么也没有。有时我会收到这样的信息:“错误:信号器:必须先启动连接,然后才能发送数据。Call.start()before.send()”—但我意识到这与问题无关。有时会出现,有时不会。当数据库插入发生时,可能会发生某种异常。如果在Visual Studio中进行调试,它是否会中断执行并报告错误?@user3127450:如果它正在引发异常,请检查异常/错误?请在这里发布错误日志。这样人们才能回答@阿迪森:没有。这是奇怪的部分。当我检查数据库时,这些值都在那里,所以它保存了。在这种情况下,它必须运行db.SaveChanges。你的问题在别的地方。当浏览器从$.post请求返回时,是否在开发人员控制台中报告任何错误?@ADyson Yes man。它正在运行。真奇怪。尽管我在运行调试时总是使用步骤切换,但它从未在保存更改时停止。当我放一个断点时,它就停在那里了。好吧,但我试着检查IE控制台是否有任何错误,但什么也没有。有时我会收到这样的信息:“错误:信号器:必须先启动连接,然后才能发送数据。Call.start()before.send()”—但我意识到这与问题无关。有时会出现,有时不会。谢谢回复!我在“Clientes=db.Clientes.ToList();”System.Data.Entity.DbSet RexsoftEntities.Clientes{get;set;}行中遇到了转换问题,无法隐式地将类型“System.Collections.Generic.List”转换为“Rexsoft.Clientes”。我删除了提交按钮的类型,并将简单按钮类型放入。它现在似乎起作用了。那么我如何提交我的表格呢?@user3127450关于您的第一条评论:
var Clientes=new Clientes()
Clientes=db.Clientes.ToList()这是尝试将列表分配给单个对象。为什么?ToList()命令似乎无关紧要-为什么要返回所有客户端?@user3127450关于您的第二条评论:为什么现在要提交表单?您已经将数据发送到服务器。我的理解是,一旦ajax帖子成功,您就可以重定向到另一个页面。所以在这种情况下提交表格是不相关的。@ADyson Thx谢谢你的帮助,伙计。是的,关于第二个问题,你是对的。我必须开发一个变通方法来验证我的表单,这很简单