调用knockoutjs postJson后如何收到JSON响应?

时间:2011-03-30 19:50:01

标签: jquery json knockout.js

当我调用knockoutjs postJson()函数时,有没有办法从服务器上调用一个成功的Json响应函数,就像你可以使用Jquery的ajax帖子一样?

我想做两件事之一:

1)PostJson,如果验证失败,则让控制器响应Json错误消息。

2)模型验证成功,页面被回发(使用RedirectToAction('Index'))。

2 个答案:

答案 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
});