gpt4 book ai didi

javascript - 如何在没有 jQuery 的情况下使用 $http 发布 urlencoded 表单数据?

转载 作者:IT老高 更新时间:2023-10-28 13:15:02 25 4
gpt4 key购买 nike

我是 AngularJS 的新手,一开始我想开发一个只使用 AngularJS 的新应用程序。

我正在尝试使用 Angular 应用程序中的 $http 对服务器端进行 AJAX 调用。

为了发送参数,我尝试了以下方法:

$http({
method: "post",
url: URL,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: $.param({username: $scope.userName, password: $scope.password})
}).success(function(result){
console.log(result);
});

这是可行的,但它也在 $.param 中使用 jQuery。为了消除对 jQuery 的依赖,我尝试了:

data: {username: $scope.userName, password: $scope.password}

但这似乎失败了。然后我尝试了 params:

params: {username: $scope.userName, password: $scope.password}

但这似乎也失败了。然后我尝试了 JSON.stringify:

data: JSON.stringify({username: $scope.userName, password: $scope.password})

我为我的任务找到了这些可能的答案,但没有成功。难道我做错了什么?我敢肯定,AngularJS 会提供这个功能,但是如何提供呢?

最佳答案

我认为您需要做的是将数据从对象转换为 JSON 字符串,而不是转换为 url 参数。

From Ben Nadel's blog .

By default, the $http service will transform the outgoing request byserializing the data as JSON and then posting it with the content-type, "application/json". When we want to post the value as a FORMpost, we need to change the serialization algorithm and post the datawith the content-type, "application/x-www-form-urlencoded".

示例 from here .

$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 添加的新服务,请参阅

关于javascript - 如何在没有 jQuery 的情况下使用 $http 发布 urlencoded 表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24710503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com