我正在尝试在angularJs中的GET方法中发送参数。
$scope.callMethod = function(url , paramName1, paramName2 ,paramValue1 , paramValue2)
{
$http.get('rest/'+url+'?cd='+ (new Date()).getTime(),{params:{paramName1:paramValue1 ,paramName2:paramValue2}}).success(function(data)
{
console.log("in success block");
}).error(function(data)
{
console.log("in error block");
}
);
}
这里我提供了所有变量的值,包括 paramNames ,因为我希望此方法可重用,但在浏览器调试期间,我看到paramValues被追加到正确的方法,但paramNames是硬编码的。 URL如下:
http://localhost:7001/MyWeb/rest/getProj?cd=1419222398177¶mName1=666560¶mName2=1
我在弹簧控制器中提供了正确的URL映射。如果给我错误
406 (Not Acceptable)
请告诉我,无法在网址中提供密钥作为变量。提前谢谢
答案 0 :(得分:1)
这是因为$http
正在使用params
对象的键作为查询字符串键,因此当您像内容一样定义内联对象文字时,字符串paramName1
变为实际的关键。
如果您想使用paramName1
的值作为关键,请准备好您的params
对象:
var params = {};
params[paramName1] = paramValue1;
params[paramName2] = paramValue2;
然后拨打$http
:
$http.get('rest/' + url + '?cd=' + (new Date()).getTime(), {
params: params
})
答案 1 :(得分:0)
您可以在对象中使用变量作为键,您只需要事先对它们进行字符串化。您可以执行New Dev建议的操作,它会在括号中的变量上调用.toString。或者您可以显式调用JSON.stringify:
var params = {};
params[JSON.stringify(paramName1)] = paramValue1;
params[JSON.stringify(paramName2)] = paramValue2;
使用JSON.stringify更健壮,不会返回[object Object]