AngularJs,如何发送 $http 的参数 [重复]
Posted
技术标签:
【中文标题】AngularJs,如何发送 $http 的参数 [重复]【英文标题】:AngularJs, how send params for $http get [duplicate] 【发布时间】:2018-01-28 23:49:31 【问题描述】:我正在尝试通过 url 将标识符的值传递给快速路由器,我要传递的变量是 IDR,我从 $routeParams.IDR 正确获取它,现在我必须通过 $http 传递它,但我做不到。
那是我的 controller.js ($routeParams.IDR 很好用)
app.controller("rutaDestinosCtrl", function($scope, $http, userService, $routeParams)
vm = this;
vm.destinos = [];
var requestData =
'IDR': $routeParams.IDR //$routeParams.IDR is for example: 5
;
vm.funciones =
obtenerDestinos : function()
$http(
method: "GET",
url: '/privadas/rutas/obtenerDestinosRuta',
requestData,
headers: 'auth-token': userService.token
)
.then(function(respuesta)
vm.destinos = respuesta.data.data;
, function(respuesta)
console.log("Error:", respuesta.status);
)
//obtenerDestinos
//funciones
vm.funciones.obtenerDestinos();
);
通过令牌过滤器并正确到达该方法后:
router.get('/obtenerDestinosRuta', function(req,res)
var query = "SELECT * FROM public.\"Destino\" D " +
" JOIN public.\"RutaDestino\" RD ON D.\"IDD\" = RD.\"IDD\"" +
" WHERE \"IDR\" = " + req.body.IDR+ " ORDER BY D.\"IDD\" ASC";
console.log(query);
db.query(query).spread(function(result, metadata)
res.json(
data: result
)
).catch(function(err)
res.status(500).send("Error: "+ err);
)
);
我无法获得存储在 RequestData 中的值(应该是 5),我尝试了几种方法都没有结果,在控制台中“req.body.IDR”未定义,如果我更改“req.body .IDR”在声明中的值为 5,效果很好,知道如何做到这一点吗?
这是 console.log 的查询结果:
SELECT * FROM public."Destino" D JOIN public."RutaDestino" RD ON D."IDD" = RD."IDD" WHERE "IDR" = undefined ORDER BY D."IDD" ASC
问候。
【问题讨论】:
我的路线和你的答案一样,效果很好,问题是其他的 在我的控制器上,我的 IDR 很好 你在使用路由提供者吗?还是国家提供者? RouteProvider,但效果很好 【参考方案1】:你能把你的路线定义也放上去吗?
在您的路由定义中,您必须指定预期的参数,如下所示:
module.config(['$routeProvider', function($routeProvider)
$routeProvider.
when('/routeName/:IDR', templateUrl: 'template.html', controller: myCtrl)
]);
注意路线中的“:IDR”值。
然后在您的控制器中,您可以使用 $routeParams.IDR 访问它
【讨论】:
将 console.log(JSON.stringify(req)) 放在 var query='...' 指令之前。只是为了检查它是否真的被定义为 req.body.IDR 而不是 req.IDR【参考方案2】:谢谢大家,终于找到其他有同样问题的帖子了:angular.http params
但是,在简历中,Angular.http 提供了一个通过 $http 发送参数的选项,称为“参数”。如果您必须使用“GET”方法,那就太好了。在我的情况下,使用后,工作完美。这是我的代码:
在 controller.js 上,我使用了 params 和 config:
app.controller("rutaDestinosCtrl", function($scope, $http, userService, $routeParams)
console.log("Controlador rutaDestinosCtrl");
vm = this;
vm.destinos = [];
vm.funciones =
obtenerDestinos : function()
var data =
IDR: $routeParams.IDR
;
var config =
params: data,
headers : 'auth-token': userService.token
;
$http.get('/privadas/rutas/obtenerDestinosRuta', config)
.then(function(respuesta)
//Acciones cuando sea una respuesta correcta
vm.destinos = respuesta.data.data;
, function(respuesta)
//Acciones cuando sea una respuesta erronea
console.log("Error:", respuesta.status);
)
//obtenerDestinos
//funciones
vm.funciones.obtenerDestinos();
);
为了获得 IDR 的值,我使用了 req.query.IDR。
router.get('/obtenerDestinosRuta', function(req,res)
console.log(req.query.IDR);
var query = "SELECT * FROM public.\"Destino\" D " +
" JOIN public.\"RutaDestino\" RD ON D.\"IDD\" = RD.\"IDD\"" +
" WHERE \"IDR\" = " + req.query.IDR + " ORDER BY D.\"IDD\" ASC";
console.log(query);
db.query(query).spread(function(result, metadata)
res.json(
data: result
)
).catch(function(err)
res.status(500).send("Error: "+ err);
)
);
【讨论】:
如已建议的那样称为“参数”或 $routeParams?以上是关于AngularJs,如何发送 $http 的参数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS - $http.post 发送请求参数而不是 JSON 的任何方式?
AngularJS - 如何在所有请求上发送通用 URL 参数?
如何使用 angularjs $http.delete() 请求发送数据?
后端接收不到AngularJs中$http.post发送的数据的问题
如何使用 _csrf 在 angularjs 中发送 POST 请求?
Django + Angular:如何将 angularjs $http 数据或参数发送到 django 并在 django 中解释?