【问题标题】:AngularJS passing params data in a specific order using $http.get requestAngularJS 使用 $http.get 请求以特定顺序传递参数数据
【发布时间】:2014-04-29 18:51:20
【问题描述】:

我在一个简单的原型应用程序中使用 AngularJS,该应用程序在后端使用 Domino 服务器。

当我像这样进行看似简单的调用时:

$http({ url: $scope.hrEventsPath, 
        method : "GET", 
        params : { 'readform' : '',
                   'eventid' : $scope.queryStringPairs.eventid,
                   'userid' : $scope.queryStringPairs.userid,
                   'login' : $scope.queryStringPairs.login } }).
            success(function(data, status) {
                // happy stuff
            }).
            error(function(data, status) {
                // error handling stuff
            });

似乎 Angular 在调用时将所有参数按字母顺序排列。

因此,readform 参数不是第一个参数,eventid 是,Domino 服务器阻塞。 (无论 'readform' 是否有值,都会发生这种情况)

不管 Domino 及其配置如何,有没有办法在 Angularm 中对订单进行排序,或者应该使用另一种方法?

提前致谢。

【问题讨论】:

    标签: ajax angularjs get javascript


    【解决方案1】:

    使用单个对象的数组,那么对象将没有机会自行切换。

    [ {}, {}, {} ]
    

    【讨论】:

    • 添加到您的答案中,这就是答案有效的原因。 github.com/angular/angular.js/blob/master/src/ng/http.js#L1014 默认情况下,如果作为单个对象传递,角度会对所有参数键进行排序。
    • 感谢@StenMuchow,并感谢您提供额外的说明为什么它会这样。
    • 虽然将对象数组传递给params 会保留顺序,但它不会生成与传递属性对象相同的 URL。为了使订单正常工作,我缺少什么? params: { query: 5, other: 2 } 产生 ?query=5&other=2 传入对象数组执行以下操作:params: [{query: 5}, {other: 2}] 产生 ?0=%7B%22query%22:5%7D&1=%7B%22other%22:2%7D
    • 您有一些代码示例要查看吗?也许是个笨蛋?
    • @StenMuchow 这是一个带有代码的 jsbin - jsbin.com/canedu/14/edit?js,console 您可以在 $http 代码中的 getOrderedParamsgetParams 两种方法之间切换,以查看正在生成的不同 URL。您可以忽略端点返回错误的事实,因为未启用 CORS,我们只想查看控制台中生成的 URL 作为示例。
    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多