Как получить ответ JSON после вызова knockoutjs postJson? - PullRequest
1 голос
/ 30 марта 2011

Когда я вызываю функцию knockoutjs postJson (), есть ли способ вызвать функцию при успешном ответе Json с сервера, как вы можете с помощью поста Jquery ajax?

Я хочу сделать одну из двух вещей:

1) PostJson, а затем контроллер отправляет сообщение об ошибке Json, если проверка завершается неудачей.

2) Проверка модели завершается успешно и страница отправляется обратно (с помощью RedirectToAction ('Index')).

Ответы [ 2 ]

5 голосов
/ 31 марта 2011

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
    }
});
3 голосов
/ 31 марта 2011

Вы также можете создать собственную удобную функцию postJson (), если планируете публиковать json более чем в одном месте.

$.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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...