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

AngularJS - $http.post отправляет данные как json

Я работаю над директивой autocomplete с angularjs, но имею некоторые проблемы.

У меня есть форма, которая имеет вход автозаполнения. Когда я что-то там набираю, переменная терма отправляется как JSON:

enter image description here

Но, когда я использую одну и ту же функцию (из другого контроллера angular, но ту же функцию) в другой форме, переменная term отправляется отлично, и автозаполнение работает нормально:

enter image description here

Вот моя функция angular:

$scope.getCustomers = function (searchString) {
    return $http.post("/customer/data/autocomplete",
        {term: searchString})
        .then(function (response) {
            return response;
        });
};

Как вы думаете, что неправильно?

4b9b3361

Ответ 1

Используйте JSON.stringify(), чтобы обернуть json

var parameter = JSON.stringify({type:"user", username:user_email, password:user_password});
    $http.post(url, parameter).
    success(function(data, status, headers, config) {
        // this callback will be called asynchronously
        // when the response is available
        console.log(data);
      }).
      error(function(data, status, headers, config) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
      });

Ответ 2

Я думаю, что наиболее правильным способом является использование одного и того же фрагмента кода angular при использовании запроса "получить", используя $httpParamSerializer, чтобы добавить его к контроллеру, чтобы вы могли просто сделать следующее, не имея использовать JQuery вообще, $http.post(url,$httpParamSerializer({param:val}))

app.controller('ctrl',function($scope,$http,$httpParamSerializer){
  $http.post(url,$httpParamSerializer({param:val,secondParam:secondVal}));
}

Ответ 3

Рассмотрим явно установку заголовка в $http.post(я помещаю приложение /json, так как не уверен, какая из двух версий в вашем примере является рабочей, но вы можете использовать application/x-www-form -urlencoded, если он другой):

$http.post("/customer/data/autocomplete", {term: searchString}, {headers: {'Content-Type': 'application/json'} })
        .then(function (response) {
            return response;
        });