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

如何在没有 jQuery 的情况下使用 AngularJS 的 $http 服务发布 URL 编码的表单数据?

Linda Hamilton
发布: 2024-12-03 17:12:14
原创
404 人浏览过

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

在没有 jQuery 的情况下使用 $http 发布 URL 编码的表单数据

使用 AngularJS 的 $http 服务进行 AJAX 调用时,在发送需要的表单数据时可能会遇到挑战URL 编码。对于那些寻求无 jQuery 解决方案的人来说,这尤其令人沮丧。

问题

尝试使用 Angular 的 $http 服务通过以下方法发送表单数据会导致失败:

  • 数据:{用户名:$scope.userName,密码: $scope.password}
  • params: {用户名: $scope.userName, 密码: $scope.password}
  • data: JSON.stringify({用户名: $scope.userName, 密码: $scope.password})

解决方案

成功 POST URL 编码表单数据,需要将数据对象转换为URL参数。根据 Ben Nadel 的说法,Angular 默认将传出数据序列化为 JSON,并以“application/json”内容类型发布。

要更改此行为并发布表单数据,请更新代码如下:

data: {username: $scope.userName, password: $scope.password}
登录后复制
transformRequest: function(obj) {
    var str = [];
    for(var p in obj)
    str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
    return str.join("&");
},
登录后复制

此代码将 JavaScript 对象转换为 URL 编码的字符串,允许成功 POST 表单数据而无需jQuery。

Angular 1.4 的增强解决方案

对于 AngularJS v1.4 及更高版本,利用新添加的服务提供了更简单的解决方案:

data: {username: $scope.userName, password: $scope.password},
headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
}
登录后复制

以上是如何在没有 jQuery 的情况下使用 AngularJS 的 $http 服务发布 URL 编码的表单数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板