Подтвердить что ты не робот

Как передать параметры в $http в angularjs?

Предположим, что у меня есть два поля ввода с соответствующей ng-моделью как fname и lname. Если я вызываю http-запрос как:

$http({method:'GET', url:'/search', params:{fname: fname, lname: lname}})

вызовет ли он адрес:

/search?fname=fname&lname=lname

Ошибка, которую я получаю на бэкэнд (python):

cannot concatenate str and nontype objects.

Эти параметры не отправляются как строки? Если нет, как обойти это?

4b9b3361

Ответ 1

Вот как вы это делаете:

$http.get("/url/to/resource/", {params:{"param1": val1, "param2": val2}})
    .then(function (response) { /* */ })...

Angular исправляет параметры.

Ответ Максима Шустина не работает ({method:'GET', url:'/search', jsonData} не является допустимым литералом JavaScript), и ответ JeyTheva, хотя и простой, опасен, поскольку он позволяет XSS (небезопасные значения не экранируются при их конкатенации).

Ответ 2

Построить URL '/search' как строку. Как

"/search?fname="+fname"+"&lname="+lname

На самом деле я не использовал

 `$http({method:'GET', url:'/search', params:{fname: fname, lname: lname}})` 

но я уверен, что "params" должен быть JSON.stringify как для POST

var jsonData = JSON.stringify(
    {
        fname: fname,
        lname: lname 
    }
);

После:

$http({
  method:'GET',
  url:'/search',
  params: jsonData
});

Ответ 3

Вот простой код для передачи значений от поставщика маршрута.

//Route Provider
$routeProvider.when("/page/:val1/:val2/:val3",{controller:pageCTRL, templateUrl: 'pages.html'});


//Controller
$http.get( 'page.php?val1='+$routeParams.val1 +'&val2='+$routeParams.val2 +'&val3='+$routeParams.val3 , { cache: true})
        .then(function(res){
            //....
        })

Ответ 4

Мы можем использовать входные данные для передачи его в качестве параметра в файле HTML w с использованием ng-модели для привязки значения поля ввода.

<input type="text" placeholder="Enter your Email" ng-model="email" required>

<input type="text" placeholder="Enter your password " ng-model="password" required> 

а в файле js w используйте $scope для доступа к этим данным:

$scope.email="";
$scope.password="";

Функция контроллера будет примерно такой:

 var app = angular.module('myApp', []);

    app.controller('assignController', function($scope, $http) {
      $scope.email="";
      $scope.password="";

      $http({
        method: "POST",
        url: "http://localhost:3000/users/sign_in",
        params: {email: $scope.email, password: $scope.password}

      }).then(function mySuccess(response) {
          // a string, or an object, carrying the response from the server.
          $scope.myRes = response.data;
          $scope.statuscode = response.status;

        }, function myError(response) {
          $scope.myRes = response.statusText;
      });
    });