アンギュラーjsでオートコンプリートディレクティブに取り組んでいますが、いくつかの問題があります。
オートコンプリートの入力があるフォームがあります。そこで何かを入力すると、term variableがJSONとして送信されます:
しかし、別の形式で同じ関数(異なるangularコントローラーから、しかし同じ関数)を使用すると、term variableが完全に送信され、オートコンプリートは正常に動作します。
これが私のangular関数です:
$scope.getCustomers = function (searchString) {
return $http.post("/customer/data/autocomplete",
{term: searchString})
.then(function (response) {
return response;
});
};
何が間違っていると思いますか?
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.
});
$ http.postにヘッダーを明示的に設定することを検討してください(アプリケーションの2つのバージョンのどちらが機能するかわからないのでapplication/jsonを配置しますが、次の場合はapplication/x-www-form-urlencodedを使用できますもう1つです):
$http.post("/customer/data/autocomplete", {term: searchString}, {headers: {'Content-Type': 'application/json'} })
.then(function (response) {
return response;
});
私が最も適切な方法は、同じコードを使用することだと思いますangularを使用して「get」リクエストを行うときに$httpParamSerializer
をコントローラーにインジェクトする必要があるので、次のことを単純に行うことができますJqueryを使用する、$http.post(url,$httpParamSerializer({param:val}))
app.controller('ctrl',function($scope,$http,$httpParamSerializer){
$http.post(url,$httpParamSerializer({param:val,secondParam:secondVal}));
}