1

我有这个使用 amplify.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 为空,p2 为“错误”,p3 未定义。

类似的 jQuery.ajax 会正确填充这些参数。

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

我是否缺少 Amplify.js 配置来完成这项工作?

4

2 回答 2

1

按照这个链接

扩大支持小组

看起来默认不支持解析错误正文。我将不得不为此编写自己的解码器。

于 2012-10-29T14:09:58.263 回答
0

默认情况下,放大使用 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

于 2014-09-08T12:47:45.180 回答