当我调用knockoutjs postJson()函数时,有没有办法从服务器上调用一个成功的Json响应函数,就像你可以使用Jquery的ajax帖子一样?
我想做两件事之一:
1)PostJson,如果验证失败,则让控制器响应Json错误消息。
2)模型验证成功,页面被回发(使用RedirectToAction('Index'))。
答案 0 :(得分:5)
ko.utils.postJson旨在将数据发布到服务器,就像您为表单提交了一样,并将JSON作为urlencoded数据发布。如果你想通过AJAX发布数据并在成功或失败时运行代码,那么最好的办法是使用jQuery AJAX函数。此外,您可以使用ko.toJSON(yourobject)方便地获取对象的JSON表示,并且所有可观察对象都已正确展开。
类似的东西:
$.ajax({
url: yourcontroller/action,
type: "POST",
data: ko.toJSON(yourdata),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data) {
...do something
}
});
答案 1 :(得分:3)
如果您打算在多个地方发布json,也可以自己设置postJson()函数。
$.postJson = function (url, data, callback) {
return jQuery.ajax({
type: 'POST',
url: url,
data: ko.toJSON(data),
contentType: 'application/json; charset=utf-8',
dataType: 'json'
}).success(callback).error(function (jqhr, text) { alert(text); });
}
然后你会这样使用它:
$.postJson("some/url", {some:"data"}, function(response) {
// do something with the response
});