AngularJS将数据传递给$http。get请求

我有一个函数,它做一个http POST请求。代码如下所示。这很好。

 $http({
url: user.update_path,
method: "POST",
data: {user_id: user.id, draft: true}
});

我有另一个函数http GET,我想发送数据到该请求。但是我在get中没有这个选项。

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

http.get的语法是

get (url、配置)

696609 次浏览

HTTP GET请求不能包含要发布到服务器的数据。但是,您可以向请求添加查询字符串。

角。http为它提供了一个名为params的选项。

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

参见:http://docs.angularjs.org/api/ng。$ http #https://docs.angularjs.org/api/ng/service/ http #使用美元(显示params参数)

可以直接传递参数给$http.get()下面的工作很好

$http.get(user.details_path, {
params: { user_id: user.id }
});

你甚至可以简单地将参数添加到url的末尾:

$http.get('path/to/script.php?param=hello').success(function(data) {
alert(data);
});

与script.php配对:

<? var_dump($_GET); ?>

导致以下javascript警告:

array(1) {
["param"]=>
string(4) "hello"
}

对于那些有兴趣在GET请求中发送参数和头的人的解决方案

$http.get('https://www.your-website.com/api/users.json', {
params:  {page: 1, limit: 100, sort: 'name', direction: 'desc'},
headers: {'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
}
)
.then(function(response) {
// Request completed successfully
}, function(x) {
// Request error
});

完整的服务示例如下所示

var mainApp = angular.module("mainApp", []);


mainApp.service('UserService', function($http, $q){


this.getUsers = function(page = 1, limit = 100, sort = 'id', direction = 'desc') {


var dfrd = $q.defer();
$http.get('https://www.your-website.com/api/users.json',
{
params:{page: page, limit: limit, sort: sort, direction: direction},
headers: {Authorization: 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
}
)
.then(function(response) {
if ( response.data.success == true ) {


} else {


}
}, function(x) {


dfrd.reject(true);
});
return dfrd.promise;
}


});

AngularJS v1.4.8开始,可以使用

. <强> # EYZ0 < / >强
var data = {
user_id:user.id
};


var config = {
params: data,
headers : {'Accept' : 'application/json'}
};


$http.get(user.details_path, config).then(function(response) {
// process response here..
}, function(response) {
});

用于发送get请求参数i使用

  $http.get('urlPartOne\\'+parameter+'\\urlPartTwo')

这样你就可以使用你自己的url字符串

下面是在ASP中使用angular.js的HTTP GET请求的完整示例。NET MVC:

控制器:

public class AngularController : Controller
{
public JsonResult GetFullName(string name, string surname)
{
System.Diagnostics.Debugger.Break();
return Json(new { fullName = String.Format("{0} {1}",name,surname) }, JsonRequestBehavior.AllowGet);
}
}

观点:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script type="text/javascript">
var myApp = angular.module("app", []);


myApp.controller('controller', function ($scope, $http) {


$scope.GetFullName = function (employee) {


//The url is as follows - ControllerName/ActionName?name=nameValue&surname=surnameValue


$http.get("/Angular/GetFullName?name=" + $scope.name + "&surname=" + $scope.surname).
success(function (data, status, headers, config) {
alert('Your full name is - ' + data.fullName);
}).
error(function (data, status, headers, config) {
alert("An error occurred during the AJAX request");
});


}
});


</script>


<div ng-app="app" ng-controller="controller">


<input type="text" ng-model="name" />
<input type="text" ng-model="surname" />
<input type="button" ng-click="GetFullName()" value="Get Full Name" />
</div>