【发布时间】: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 对象键也是如此。
data和Data是两个不同的键。 jQuery 的ajax函数期望data以小写字母开头,就像它期望type、url、contentType和success而不是Type、URL、ContentType或987654338@. -
谢谢阿马丹。我将键名从 Data 更改为 data。我会更仔细地命名。但它不会影响该过程,有一条控制台消息“.../ajaxCall/insertProAjax 404 (Not Found)”。我认为ajax 不能调用到任何地方。我仍然对此感到困惑。
-
这可能会帮助你stackoverflow.com/questions/4120212/…。我猜您正在尝试发布到 .net mvc 控制器?另一种选择是在您的项目中包含 web api,然后发布到 .net web api 控制器。 (这些控制器是为这种事情设计的)