当前位置: 首页 > 面试题库 >

AngularJS,$ http和transformResponse

阎善
2023-03-14
问题内容

我在AngularJS的$ http上遇到了一个奇怪的行为,但并没有真正理解transformResponse的工作方式(文档对此有点儿淡淡)。

    WebAssets.get = function () {
        return $http.get('/api/webassets/list', {
            transformResponse: [function (data, headersGetter) {
                // not sure what to do here?!
                return data;
            }].concat($http.defaults.transformResponse) // presume this isn't needed, added for clarity
        }).then(function (response) {
            return new WebAssets(response.data);
        });
    };

api返回一个对象数组:

[{"webasset_name": "...", "application_id": "...", "etc": "..."}, ... ]

但是,当transformResponse完成操作后,数据就变成了索引对象:

{"0":{"webasset_name":"...","application_id":"...", "etc": "..."}, "1":....}

我想保留原始数据结构(对象数组)。


问题答案:

为了使角度不将数据转换为对象,您需要覆盖默认$
httpProvider.defaults.transformResponse的行为。它实际上是一组变压器。您可以将其设置为空:$http.defaults.transformResponse = []; 这是我用来将64位长整数转换为字符串的示例转换器:

function longsToStrings(response) {
    //console.log("transforming response");
    var numbers = /("[^"]*":\s*)(\d{15,})([,}])/g;
    var newResponse = response.replace(numbers, "$1\"$2\"$3");
    return newResponse;
}

要将转换器添加到默认列表,例如在JSON反序列化器之前,您可以执行以下操作:

$http.defaults.transformResponse.unshift(longsToStrings);


 类似资料:
  • 问题内容: 我有一些要调用的Web服务。或,我应该使用哪一个? :https : //docs.angularjs.org/api/ngResource/service/$resource :https : //docs.angularjs.org/api/ng/service/$http 阅读以上两个API页面后,我迷路了。 您能用简单的英语给我解释一下有什么区别,在什么情况下我应该使用它们?如

  • 问题内容: 因为在AngularJS中使用CORS和http身份验证可能会比较棘手,所以我编辑了问题以分享一个经验教训。首先,我要感谢igorzg。他的回答对我很有帮助。场景如下:您想使用AngularJS $ http服务将POST请求发送到另一个域。获取AngularJS和服务器设置时,需要注意一些棘手的事情。 第一:在您的应用程序配置中,您必须允许跨域调用 第二:您必须指定withCrede

  • 主要内容:读取 JSON 文件,https://www.runoob.com/try/angularjs/data/sites.php,AngularJS $http,AngularJS1.5 以上版本 - 实例,AngularJS1.5 以上版本 - 实例,AngularJS1.5 以下版本 - 实例$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。 使用格式: 简写方法 POST 与 GET 简写方法格式: 此外还有以下简写方法: $http.get $http

  • 问题内容: 我有一个AngularJS / Cordova应用程序,该应用程序轮询远程服务器上的JSON服务: 在浏览器中进行开发并在我的IntranetApache服务器()上运行,我得到“不存在’Access-Control-Allow-\Origin’标头”,因此我通过添加以下内容来解决此问题: 一切正常,我可以在Chrome开发工具中看到。 因此,不得不首先考虑这一点,我想知道当应用程序在

  • 我的angularjs$http请求有问题。当我向API发送请求时,浏览器阻止了它,如:FIREFOX中的错误:阻止加载混合活动内容“http://www.example.com/rest/default/V1/integration/admin/token/” CHROME出错:混合内容:页面位于'https://www.example.com/load.shtml#/register/pos/

  • 问题内容: 我经历了很多答案,并且在Google上搜索了很多,但仍然找不到为什么我的帖子请求不起作用的原因。 这是我的jsp: 这是我的控制器: 而我的servlet: 我不断收到此Null指针异常 请告诉我我这里做错了什么。 问题答案: 您的请求不包含名为“ data”的URL参数,因此request.getParameter(“data”)返回null,并且您获得NullPointerExce