Сообщение об ошибке не передано в запросе 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