在 AngularJS 中,使用 $http 发出 AJAX 请求是一项常见的任务。然而,不依赖 jQuery 提交 url 编码的表单数据对于初学者来说可能是一个挑战。
失败的方法
提到的方法,例如使用 data: {username : $scope.userName, 密码: $scope.password} 或 params: {用户名: $scope.userName, 密码: $scope.password},无法正确编码 url 格式的数据。
正确的解决方案
为了实现所需的功能,Angular 的 $http 服务提供了一个transformRequest 函数,允许在之前自定义数据转换将其发送到服务器。
$http({ method: 'POST', url: url, headers: {'Content-Type': 'application/x-www-form-urlencoded'}, transformRequest: function(obj) { var str = []; for(var p in obj) str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); return str.join("&"); }, data: {username: $scope.userName, password: $scope.password} }).then(function () {});
增强的解决方案(AngularJS V1.4 和稍后)
AngularJS 1.4 版及更高版本引入了专门为 URL 编码参数设计的新服务。使用这些服务,可以进一步简化流程:
$http({ method: 'POST', url: url, headers: {'Content-Type': 'application/x-www-form-urlencoded'}, transformRequest: angular.identity, params: {username: $scope.userName, password: $scope.password} }).then(function () {});
以上是如何在没有 jQuery 的情况下使用 AngularJS 的 $http 提交 URL 编码的表单数据?的详细内容。更多信息请关注PHP中文网其他相关文章!