2015-08-24 17 views
5

Tôi muốn thực hiện yêu cầu Nhận phụ trợ của tôi, nhưng tôi muốn xác minh một số thông tin xác thực người dùng trước khi gửi đối tượng phản hồi.

Đây là mã của tôi:

$scope.getEverything = function(){ 
    $http.get('http://localhost:1234/things').success(function(data){ 
     $scope.things = data; 
    }); 
}; 

Tôi đã thử đoạn code tương tự với cú pháp sau:

$http.method('path).then 
$http.method(config) 

Và tôi chỉ không thể tìm ra cách để vượt qua trong một số dữ liệu. Cố gắng sử dụng params: Dữ liệu là đối tượng cấu hình với in ra:

GET http://localhost:1234/[object%20Object] 404 (Not Found)

Trên console.

Tài liệu AngularJS không nói một từ về gửi dữ liệu với các yêu cầu GET. Tôi cũng đã thử một số câu trả lời của Stack, nhưng hầu hết sau đó là lỗi thời và sẽ không hoạt động.

Tôi có thể gửi dữ liệu bằng yêu cầu GET hoặc đây chỉ là một lỗi thiết kế trong đơn đăng ký của tôi không?

Trả lời

5

Bạn có nhiều khả năng sẽ cần sử dụng phương thức POST thay vì phương thức GET.

Nhưng để làm điều đó với một phương thức GET:

Từ AngularJS passing data to $http.get request:

Một HTTP yêu cầu GET không thể chứa dữ liệu được gửi đến máy chủ. Tuy nhiên, bạn có thể thêm chuỗi truy vấn vào yêu cầu.

angular.http cung cấp tùy chọn cho thông số đó.

$http({ 
    url: user.details_path, 
    method: "GET", 
    params: {user_id: user.id} 
}); 

Và sử dụng AngularJS POST thay vì:

$http.post('/someUrl', {msg:'hello word!'}). 
    then(function(response) { 
    // this callback will be called asynchronously 
    // when the response is available 
    }, function(response) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 
    }); 
+0

tại sao bạn tiêm jQuery '$ .ajax' vào một câu hỏi góc? angular có api riêng của nó api – charlietfl

+0

Tôi đưa cả hai cho rõ ràng – WMios

+0

Tôi không nghĩ rằng jquery nên được sử dụng trực tiếp nếu AngularJS được đặt ra, vì điều đó sẽ buộc phải sử dụng $ scope. $ apply và cũng sẽ phá vỡ testability của góc (làm Thước đo góc ngừng chờ yêu cầu kết thúc) –

1

Hãy thử

var req = { 
method: 'GET', 
url: 'http://localhost:1234/things', 
data: { test: 'test' } 
} 

$http(req).then(function(){...}, function(){...}); 
2

Đối $http.get yêu cầu sử dụng params tài sản của đối tượng cấu hình

$http.get(url, {params:{ foo:'bar'}}).then(func.... 

Xem Arguments bảng trong Cách sử dụng phần của $http docs

2

Nếu bạn muốn vượt qua một số dữ liệu về việc sử dụng phương thức GET bạn có thể vượt qua một tùy chọn params trên method get của dịch vụ $ http. Đây sẽ là urlencode thông số

$http.get(url, { 
    params: { 
    query: 'hello world' 
    } 
} 

hoặc

$http({ 
    url: url, 
    method:'GET', 
    params: { 
    query:'Hello World' 
    } 
}) 

Nhưng, standars http xác định phương thức POST để gửi dữ liệu đến máy chủ.GET chỉ là lấy dữ liệu từ nó. Trên góc bưu phương pháp:

$http({ 
    url: url, 
    method:'POST', 
    data: { 
    query: 'Hello World' 
    } 
}) 

kiểm tra các official docs từ GETPOST

+0

Cảm ơn bạn. Nhưng tôi không muốn sử dụng tham số truy vấn. :/ Tôi đang đi với POST. Cảm ơn. – Rodmentou

+0

Bài đăng là cách nghiêm ngặt để gửi dữ liệu đến máy chủ, thông số nhận được là dữ liệu được thêm vào url của yêu cầu. exp: url? query = helloworld & otherparam = 23. Mục đích của nó là tinh chỉnh các tùy chọn yêu cầu. Không gửi dữ liệu đến máy chủ. – chfumero

Các vấn đề liên quan