【问题标题】:$http get parameters does not work$http 获取参数不起作用
【发布时间】:2013-06-20 22:45:17
【问题描述】:

有谁知道为什么这不起作用?

$http
    .get('accept.php', {
        source: link,
        category_id: category
    })
    .success(function (data, status) {
        $scope.info_show = data
    });

这确实有效:

$http
    .get('accept.php?source=' + link + '&category_id=' + category)
    .success(function (data, status) {
        $scope.info_show = data
    });

【问题讨论】:

    标签: javascript angularjs http angular-http


    【解决方案1】:

    get 调用中的第二个参数是一个配置对象。你想要这样的东西:

    $http
        .get('accept.php', {
            params: {
                source: link,
                category_id: category
            }
         })
         .success(function (data,status) {
              $scope.info_show = data
         });
    

    有关详细信息,请参阅http://docs.angularjs.org/api/ng.$http参数部分

    【讨论】:

    • 注意,如上使用params也解决了GET请求不使用data的问题。 AngularJS 不会像 jQuery 那样自行解决这个问题。 (我不认为这是一件好事或坏事,只是不同,可能会绊倒人们)。
    • 我在 params 对象中的键值属性未定义。这应该在服务中有所不同吗?
    • 另外,当params 对象为空,或其所有属性为nullundefined 时,不会向查询字符串添加任何内容。
    【解决方案2】:

    来自$http.get docs,第二个参数是一个配置对象:

    get(url, [config]);

    执行GET请求的快捷方式。

    您可以将代码更改为:

    $http.get('accept.php', {
        params: {
            source: link, 
            category_id: category
        }
    });
    

    或者:

    $http({
        url: 'accept.php', 
        method: 'GET',
        params: { 
            source: link, 
            category_id: category
        }
    });
    

    附带说明,由于 Angular 1.6.successshould not be used anymore,请改用.then

    $http.get('/url', config).then(successCallback, errorCallback);
    

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 2015-12-29
      • 1970-01-01
      • 2021-11-13
      • 2018-10-20
      • 2019-06-05
      相关资源
      最近更新 更多