我一直试图解决这个问题好几个星期......
这会向控制器报告有效的JSON请求,但控制器会为数据报告null。
function ViewModel() {
self = this;
self.CurrentColors = ko.observableArray([]);
self.AddColors = ko.observableArray([]);
self.AllColors = ko.observableArray([]);
self.save = function ()
{
SendData = ko.toJSON(AddColors);
alert(SendData);
$.ajax({
contentType: 'application/json; charset=utf-8',
type: "POST",
cache: false,
url: '/EditColor/PostColors',
data: SendData
}).success(function (data) {
});
};
}
$(document).ready(function () {
ko.applyBindings(new ViewModel());
});
控制器数据模型:
public class AjaxColorList
{
public string ID { get; set; }
public string Duration { get; set; }
public string bNotPermanent { get; set; }
}
Fiddler表明:(看起来不错)
[{"ID":"15","Duration":"Permanent","bNotPermanent":"1"},{"ID":"21","Duration":"Permanent","bNotPermanent":"1"}]
以下发布完全相同的数据,但我的控制器会看到数据。我还不是javascript的专家(现在只是学习),所以我还没有完全理解发生了什么。在第二次迭代工作之后;我无法获得该文件。已经被认可以及其他各种问题。
$(function () {
var baseModel = {
// data
addColors: ko.observableArray([{"ID":"15","Duration":"Permanent","bNotPermanent":"1"},{"ID":"21","Duration":"Permanent","bNotPermanent":"1"}]),
postColors: function () {
console.log(baseModel.addColors());
$.ajax({
url: '/EditColor/PostColors',
contentType: "application/json",
async: true,
type: "POST",
data: JSON.stringify(baseModel.addColors()),
error: function (jqXHR, textStatus, errorThrown) {
console.log("FAIL: " + errorThrown);
},
success: function (data, textStatus, jqXHR) {
console.log("SUCCES");
}
});
}
};
ko.applyBindings(baseModel);
});
fiddler数据与上面的内容相同。
有人可以解释为什么顶级代码不起作用吗?
答案 0 :(得分:0)
上面的代码已得到纠正。这是一个“contentType”正确的问题。谢谢!