首页 >web前端 >js教程 >如何在没有 jQuery 的情况下使用 AngularJS 的 $http 提交 URL 编码的表单数据?

如何在没有 jQuery 的情况下使用 AngularJS 的 $http 提交 URL 编码的表单数据?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-17 14:25:10639浏览

How to Submit URL-Encoded Form Data with AngularJS's $http Without jQuery?

在不使用 jQuery 的情况下使用 $http 提交 URL 编码的表单数据

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn