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;
});
};
Как вы думаете, что неправильно?
Ответы
Ответ 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;
});