【问题标题】:pass parametes in angularJs in GET method在 GET 方法中在 angularJs 中传递参数
【发布时间】:2014-12-22 04:59:34
【问题描述】:

我正在尝试在 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 因为我希望这个方法是 reusable 但是在浏览器中调试期间我看到 paramValues 被附加到正确的方法,但 paramNames 是硬编码的。网址如下:

http://localhost:7001/MyWeb/rest/getProj?cd=1419222398177&paramName1=666560&paramName2=1

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

 406 (Not Acceptable) 

请告诉我,是否无法在 URL 中提供 keys 作为变量。提前致谢

【问题讨论】:

    标签: javascript angularjs url xmlhttprequest httprequest


    【解决方案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
    })
    

    【讨论】:

      【解决方案2】:

      您可以为对象中的键使用变量,您只需事先将它们字符串化。您可以执行 New Dev 建议的操作,这将在括号中的变量上调用 .toString 。或者你可以显式调用 JSON.stringify:

      var params = {};
      
      params[JSON.stringify(paramName1)] = paramValue1;
      params[JSON.stringify(paramName2)] = paramValue2;
      

      使用 JSON.stringify 更加健壮,并且不会返回类似 [object Object] 的内容

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-07
        • 2023-03-25
        • 2023-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多