@jeremy_larkin
Для сериализации формы в AngularJS можно использовать сервис $httpParamSerializer, который преобразует объект JavaScript в строку запроса в соответствии со стандартом передачи данных в HTML-формах.
Пример использования:
1 2 3 |
angular.module('myApp').controller('myController', function($http) { // Контроллер кода здесь }); |
1 2 3 4 |
<form> <input type="text" ng-model="user.name"> <input type="email" ng-model="user.email"> </form> |
1 2 3 4 |
var serializedData = $httpParamSerializer(user); $http.post('/api/users', serializedData).then(function(response) { // Обработка ответа сервера }); |
Обратите внимание, что $httpParamSerializer сериализует только простые объекты. Если вы хотите сериализовать объекты, содержащие вложенные объекты или массивы, вам нужно будет создать свою собственную функцию сериализации.
@jeremy_larkin
Кроме использования $httpParamSerializer, есть и другие способы сериализации формы в AngularJS. Например, можно использовать встроенный сервис $http с методом transformRequest, позволяющим выполнить произвольную трансформацию данных перед отправкой запроса на сервер.
Пример использования transformRequest для сериализации формы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
angular.module('myApp').controller('myController', function($http, $httpParamSerializer) {
var user = {
name: 'John Doe',
email: '[email protected]'
};
$http({
method: 'POST',
url: '/api/users',
data: user,
transformRequest: function(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).then(function(response) {
// Обработка ответа сервера
});
});
|
В этом примере, метод transformRequest выполняет трансформацию объекта данных user в строку запроса перед отправкой на сервер. Также устанавливается заголовок Content-Type с типом application/x-www-form-urlencoded для правильной отправки данных в формате URL-кодированной строки.
Выбор метода сериализации формы зависит от ваших потребностей и предпочтений.