2014-12-22 58 views
1

我想在angularJs中的GET方法中發送參數。在GET方法中傳遞angularJs中的參數

$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) 

請告訴我,是不是可以提供在URL變量。在此先感謝

回答

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 
}) 
+0

感謝花花公子。有效。 :) – rishi

0

可以使用變量爲對象中的鍵,你只需要在手之前將它們串起來。你可以像New Dev建議的那樣做,它會在括號中的變量上調用.toString。或者你也可以顯式調用JSON.stringify:

var params = {}; 

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

透過JSON.stringify較爲穩健,並不會返回類似[object Object]