【问题标题】:Error message not passed in Amplify.js requestAmplify.js 请求中未传递错误消息
【发布时间】:2012-10-27 18:27:28
【问题描述】:

我有这个使用 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为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 配置来完成这项工作?

【问题讨论】:

  • 内容类型是否设置正确? ASMX 在它所期望的方面非常严格,否则就会失败。试试contentType: "application/json; charset=utf-8"。您可能还想检查数据属性是否正确发送。我认为如果您不发送任何内容,则需要发送一个空对象,例如"{}" 并且 data 必须是 JSON 序列化字符串而不是数据对象。

标签: amplifyjs


【解决方案1】:

点击此链接

Amplify Support Group

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

【讨论】:

    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 2022-01-15
      • 2022-12-22
      • 2022-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多