Je travaille sur la directive autocomplete avec angularjs mais avec quelques problèmes.
J'ai un formulaire qui a une entrée autocomplete. Lorsque je tape quelque chose ici, la variable de terme est envoyée au format JSON:
Mais, quand j'utilise la même fonction (de différente angular, mais la même fonction) sous une autre forme, la variable de terme envoyé parfaitement et la saisie semi-automatique fonctionne bien:
Voici ma angular:
$scope.getCustomers = function (searchString) {
return $http.post("/customer/data/autocomplete",
{term: searchString})
.then(function (response) {
return response;
});
};
Qu'est-ce qui ne va pas selon vous?
Utilisez JSON.stringify () pour envelopper votre 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.
});
Envisagez de définir explicitement l'en-tête dans $ http.post (je mets application/json, car je ne suis pas sûr de savoir laquelle des deux versions de votre exemple est la version de travail, mais vous pouvez utiliser application/x-www-form-urlencoded si c'est l'autre):
$http.post("/customer/data/autocomplete", {term: searchString}, {headers: {'Content-Type': 'application/json'} })
.then(function (response) {
return response;
});
je pense que le moyen le plus approprié est d’utiliser le même morceau de code angular utilisé lors d’une requête "get" avec vous $httpParamSerializer
devra l’injecter dans votre contrôleur pour que vous pouvez simplement faire ce qui suit sans avoir à utiliser Jquery du tout, $http.post(url,$httpParamSerializer({param:val}))
app.controller('ctrl',function($scope,$http,$httpParamSerializer){
$http.post(url,$httpParamSerializer({param:val,secondParam:secondVal}));
}