Сообщение об ошибке не передано в запросе Amplify.js

У меня есть этот код, который использует ampify.js:

amplify.request.define('data', 'ajax', {
        url: "WebService.asmx/HelloWorld",
        datatype: "json",
        type: "POST"
    });

amplify.request({
        resourceId: 'data',
        success: function(p1, p2, p3) {
            debugger;
        },
        error: function(p1, p2, p3) {
            debugger;
        }
    });

Проблема в том, что сервер сообщает об ошибке, затем в обратном вызове ошибки p1 равен null, p2 равен 'error', а p3 не определен.

Подобный jQuery.ajax корректно заполняет эти параметры.

$.ajax({
        type: "POST",
        url: "WebService.asmx/HelloWorld",
        success: function(p1, p2, p3) {
            debugger;
        },
        error: function(p1, p2, p3) {
            debugger;
        }
    });

Мне не хватает конфигурации Amplify.js, чтобы это работало?

2 ответа

По этой ссылке

Усиление поддержки группы

похоже, тело ошибки синтаксического анализа не поддерживается по умолчанию. Я должен написать свой собственный декодер для этого.

По умолчанию для усиления используется Jsend-декодер, который вы можете заменить своим. Вот мой простой декодер, который передает JSON-объект тела ответа как в случае успешного вызова, так и в виде обратного вызова:

amplify.request.decoders._default = function( data, status, ampXHR, success, error ) {

    if (status === "success") {
        success(data);
    } else {
        error(JSON.parse(ampXHR.responseText));
    }

}

PS. Прежде чем делать это, рассмотрите возможность корректировки ваших ответов API на соглашения jsend, прочитайте больше здесь: http://labs.omniti.com/labs/jsend

Другие вопросы по тегам