【问题标题】:How to use KnockoutJS to save data into SQL database?如何使用 KnockoutJS 将数据保存到 SQL 数据库中?
【发布时间】:2017-07-13 23:04:19
【问题描述】:

大家好。我有一个关于如何使用正确的方法通过 KnockoutJs 将数据保存到 SQL 数据库中的问题。记录在表格中显示得很好。它应该能够通过这个弹出模式保存数据。但是在我单击该模式中的“创建”按钮后,它只会弹出一条失败的消息。有人可以帮我解决这个问题吗?非常感谢。

  • 以下是关于保存功能的主js文件的摘录

            var data = ko.toJSON(self.Profiles());
            $.ajax({
                type: 'POST',
                url: '/ajaxCall/insertProAjax',
                data: "{ Customer:" + ko.utils.stringifyJson(self.Name) + ",customerRemove:" + ko.utils.stringifyJson(self.CustomerRemove) + "}",
                contentType: "application/json",
                success: function (data) {
                    alert("Record has been saved Successfully");
                    MarkCustomerAsSaved();
                    $('#AddNewModel').modal('hide');
                },
                error: function () {
                    alert("Failed");
                }
            }).fail(function (xhr, textStatus, err) { alert(err); });
    
  • 以下是 ViewModel 中关于保存功能的摘录

        var Customer = {};
        Customer.Id = c.Id;
        Customer.Name = c.Name;
        Customer.Age = c.Age;
        Customer.Address = c.Address;
        if (isNewRecord === false) {
            $.ajax({
                type: "PUT",
                url: "/api/CustomerAPI/" + c.Id,
                data: Customer
            })
                .done(function (resp) {
                    self.Message("Record Updated Successfully ");
                    self.reset();
                })
                .fail(function (err) {
                    self.Message("Error Occures, Please Reload the Page and Try Again " + err.status);
                    self.reset();
                });
        }
        if (isNewRecord === true) {
            isNewRecord = false;
            $.ajax({
                type: "POST",
                url: "/api/CustomerAPI",
                data: Customer
            })
                .done(function (resp) {
                    self.Message("Record Added Successfully ");
                    self.reset();
                    loadData();
                }).fail(function (err) {
                    self.Message("Error Occures, Please Reload the Page and Try Again " + err.status);
                    self.reset();
                });
        }
    

【问题讨论】:

  • $.ajax 想要data,你给它Data。这些不一样。
  • 能否详细说明一下?我是初学者,刚学了1周的knockoutJs。谢谢。
  • 评论与淘汰赛无关。 JavaScript 区分大小写,JavaScript 对象键也是如此。 dataData 是两个不同的键。 jQuery 的 ajax 函数期望 data 以小写字母开头,就像它期望 typeurlcontentTypesuccess 而不是 TypeURLContentType 或987654338@.
  • 谢谢阿马丹。我将键名从 Data 更改为 data。我会更仔细地命名。但它不会影响该过程,有一条控制台消息“.../ajaxCall/insertProAjax 404 (Not Found)”。我认为ajax 不能调用到任何地方。我仍然对此感到困惑。
  • 这可能会帮助你stackoverflow.com/questions/4120212/…。我猜您正在尝试发布到 .net mvc 控制器?另一种选择是在您的项目中包含 web api,然后发布到 .net web api 控制器。 (这些控制器是为这种事情设计的)

标签: javascript knockout.js


【解决方案1】:

Knockout 和 Javascript(以这种方式)正在客户端处理。您需要在后端创建一些东西来接受您的数据负载并将其保存到数据库中。如果你想留在 JavaScript 家族,我会推荐 node.js。或者,这就是 php 或 C# 发挥作用的地方。

【讨论】:

  • 是的,我明白了,应该添加一个后端 C# 文件来支持服务器端。谢谢你提醒我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 2013-08-03
  • 2014-07-09
  • 1970-01-01
相关资源
最近更新 更多