使用 AngularJS 的 $http 服务进行 AJAX 调用时,在发送需要的表单数据时可能会遇到挑战URL 编码。对于那些寻求无 jQuery 解决方案的人来说,这尤其令人沮丧。
尝试使用 Angular 的 $http 服务通过以下方法发送表单数据会导致失败:
成功 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。
对于 AngularJS v1.4 及更高版本,利用新添加的服务提供了更简单的解决方案:
data: {username: $scope.userName, password: $scope.password}, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
以上是如何在没有 jQuery 的情况下使用 AngularJS 的 $http 服务发布 URL 编码的表单数据?的详细内容。更多信息请关注PHP中文网其他相关文章!