angularjs中$http模块POST请求request payload转form data

本文详细介绍了如何在AngularJS中使用$http发起POST请求,并解决了请求数据在PHP中通过$_POST无法获取的问题。通过配置$httpProvider和调整请求头,实现了将数据正确传递至PHP端。同时,演示了在PHP端放弃使用$_POST获取数据,转而使用文件流读取方式获取数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

已经迁移:https://www.heguo.org/blog/myweishanli


angularjs发起$http.post请求:

代码如下:

 $http({
     method:'post',
     url:'post.php',
     data:{name:"aaa",id:1,age:20}
 }).success(function(req){
     console.log(req);
 })

运行结果(chrome→network):

QQ图片20131227110729.jpg

这样的话在PHP中用$_POST是取不到的。

解决方案:

1.配置$httpProvider:

 var myApp = angular.module('app',[]);
 myApp.config(function($httpProvider){

   $httpProvider.defaults.transformRequest = function(obj){
     var str = [];
     for(var p in obj){
       str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
     }
     return str.join("&");
   }

   $httpProvider.defaults.headers.post = {
        'Content-Type': 'application/x-www-form-urlencoded'
   }

});

2.在post中配置:

 $http({
    method:'post',
    url:'post.php',
    data:{name:"aaa",id:1,age:20},
    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("&");
    }
 }).success(function(req){
        console.log(req);
 })

运行结果(chrome→network):

form data

至此成功换成form data;

3.PHP中放弃$_POST;

$rawpostdata = file_get_contents("php://input");
$post = json_decode($rawpostdata, true);
//传的数据都在$post中了;


处理POST请求中的payload数据是Python爬虫开发中的关键技能之一。为了帮助你掌握这一技能,建议参考《Python爬虫实战:POST request payload数据提交解析》这本书,它详细讲解了如何在实战中处理不同类型的POST数据。 参考资源链接:[Python爬虫实战:POST request payload数据提交解析](https://wenku.youkuaiyun.com/doc/64534aa5fcc53913680432ac?spm=1055.2569.3001.10343) 在Python中,发送POST请求通常使用requests库。以下是两种不同的数据格式处理方法: 1. Form Data格式: 首先,需要准备一个字典类型的变量来存储键值对数据。然后,通过requests.post方法发送请求,并在data参数中直接使用该字典。由于requests库会自动对字典进行编码,所以不需要手动设置Content-Type头。例如: ```python import requests url = '***' data = { 'username': 'user', 'password': 'pass', 'additionalData[key1]': 'value1', 'additionalData[key2]': 'value2' } response = requests.post(url, data=data) ``` 2. Request Payload格式: 当需要发送JSON或XML格式的结构化数据时,可以使用Request Payload。在这种情况下,需要先将数据换为JSON字符串,然后通过requests.post方法发送请求,并在data参数中使用该字符串,同时设置正确的Content-Type头(如'application/json')。例如: ```python import requests import json url = '***' payload = { 'username': 'user', 'password': 'pass', 'additionalData': { 'key1': 'value1', 'key2': 'value2' } } response = requests.post(url, data=json.dumps(payload), headers={'Content-Type': 'application/json'}) ``` 发送请求后,应该检查响应状态码和内容,确认数据是否成功提交。在这个过程中,开发者工具是非常有用的工具,可以帮助你查看和分析网络请求和响应的细节。 通过上述步骤,你可以在Python爬虫中灵活处理Form DataRequest Payload两种格式POST请求。为了深入理解并掌握更多的实战技巧,推荐你进一步阅读《Python爬虫实战:POST request payload数据提交解析》一书,它将为你提供更多的项目实战案例和深入解析。 参考资源链接:[Python爬虫实战:POST request payload数据提交解析](https://wenku.youkuaiyun.com/doc/64534aa5fcc53913680432ac?spm=1055.2569.3001.10343)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值