当前位置: 首页 > 面试题库 >

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

糜博远
2023-03-14
问题内容

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

我正在尝试使用$httpAngular应用程序向服务器端进行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);
});

这是可行的,但在上也使用jQuery $.param。为了消除对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参数而不是JSON字符串。

来自Ben Nadel的博客。

默认情况下,$ http服务将通过将数据序列化为JSON然后使用内容类型“ application /
json”将其发布来转换外发请求。当我们想将值作为FORM发布时,我们需要更改序列化算法并使用内容类型“ application / x-www-
form-urlencoded”发布数据。

这里的例子。

$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服务进行URL编码的变量


 类似资料:
  • 我找到了这些可能的答案,但没有成功。我做错什么了吗?我确信AngularJS会提供这个功能,但是如何提供呢?

  • 问题内容: 我正在尝试不使用AJAX将数据发布到REST api。我想以JSON格式发送数据。我有以下代码,但一直试图找出如何转换输入字段并将其发布到服务器。这是我的代码尝试: 问题答案: 您可以使用json值添加一个隐藏的输入字段,如下所示- 您可以使用参数( 隐藏输入的名称 )访问json

  • 我想使用POST动词在带有flask restplus的VM上执行操作,但当没有主体时,它总是导致400。 结果是400{“消息”:“浏览器(或代理)发送了一个此服务器无法理解的请求。” 如果我只是简单地从post转换为get,它就可以正常工作。但是,我真的想使用POST动词,因为这是我需要遵循的标准动词,用于自定义非CRUD操作。我有没有用flask restplus把自己画到角落里? 注意:对

  • 我正在玩grpc 有人成功使用进行生产吗?我们需要包括特使在内的所有依赖项吗?

  • 我看到的所有解决方案都需要使用。但是,我想在Eclipse之外的单个文件上使用CDT解析器。那有什么办法吗?

  • 问题内容: 我在整个应用程序中都使用spring 。现在,我也想为一个没有的创建一个。那有可能吗? 问题答案: JPA要求每个实体都有一个ID。因此,不可以,没有ID的实体是不允许的。 每个JPA实体都必须有一个主键。 从JPA规范 您可能想从这里阅读更多有关JPA如何处理数据库端没有ID的情况的信息(请参阅“无主键”)。