$ http get tham số không hoạt động


93

Có ai biết tại sao điều này không hoạt động?

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

và điều này hoạt động:

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

Câu trả lời:


191

Tham số thứ 2 trong getcuộc gọi là một đối tượng cấu hình. Bạn muốn một cái gì đó như thế này:

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

Xem phần Đối số của http://docs.angularjs.org/api/ng.$http để biết thêm chi tiết


Lưu ý, sử dụng paramsnhư trên cũng giải quyết được vấn đề yêu cầu GET không sử dụng data. AngularJS sẽ không tự sắp xếp điều này như jQuery. (Tôi không nghĩ đó là điều tốt hay điều xấu, chỉ là sự khác biệt và có thể khiến mọi người đi lên).
DanielM

Tôi đang nhận được không xác định cho các thuộc tính giá trị chính của tôi bên trong đối tượng params. Điều này có nên khác trong một dịch vụ không?
Winnemucca

2
Ngoài ra, khi paramsđối tượng trống hoặc tất cả các thuộc tính của nó là nullhoặc undefined, sẽ không có gì được thêm vào chuỗi truy vấn.
nfang

3

Từ $http.gettài liệu , tham số thứ hai là một đối tượng cấu hình:

get(url, [config]);

Phương thức phím tắt để thực hiện GETyêu cầu.

Bạn có thể thay đổi mã của mình thành:

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

Hoặc là:

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

Một lưu ý phụ, vì Angular 1.6 : .success không nên được sử dụng nữa , hãy sử dụng .thenthay thế:

$http.get('/url', config).then(successCallback, errorCallback);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.