在GET方法中传递angularJs中的参数

时间:2014-12-22 04:59:35

标签: javascript angularjs url xmlhttprequest httprequest

我正在尝试在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&paramName1=666560&paramName2=1

我在弹簧控制器中提供了正确的URL映射。如果给我错误

 406 (Not Acceptable) 

请告诉我,无法在网址中提供密钥作为变量。提前谢谢

2 个答案:

答案 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]

之类的内容