2014-12-22 4 views
1

Я пытаюсь отправить параметры в методе GET в angularJs.параметры прохождения в 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) 

Пожалуйста, скажите мне, что это не представляется возможным обеспечить ключи как переменные в 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]

Смежные вопросы