ionic/angular $http post form-data请求

本文介绍如何在AngularJS中设置$http服务以使用POST方法发送表单数据,并自定义转换函数来序列化请求数据。

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

主要有两个步骤,一是重置$http的heads参数,二是参数转换方法

$http的heads参数

var param = {url:'',method:'post'}
//transformRequestAsFormPost是自定义方法,代码在下面
param['transformRequest'] = transformRequestAsFormPost;
//虽然transformRequestAsFormPost中也对headers做了改变,但不知道为什么不好用,自测在这里修改才好用
param['headers'] = { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'};

transformRequestAsFormPost

app.factory(
  "transformRequestAsFormPost",
  function() {
    // I prepare the request data for the form post.
    function transformRequest( data, getHeaders ) {
      var headers = getHeaders();
      headers[ "Content-type" ] = "application/x-www-form-urlencoded; charset=utf-8";
      return( serializeData( data ) );
    }
    // Return the factory value.
    return( transformRequest );
    // ---
    // PRVIATE METHODS.
    // ---
    // I serialize the given Object into a key-value pair string. This
    // method expects an object and will default to the toString() method.
    // --
    // NOTE: This is an atered version of the jQuery.param() method which
    // will serialize a data collection for Form posting.
    // --
    // https://github.com/jquery/jquery/blob/master/src/serialize.js#L45
    function serializeData( data ) {
      // If this is not an object, defer to native stringification.
      if ( ! angular.isObject( data ) ) {
        return( ( data == null ) ? "" : data.toString() );
      }
      var buffer = [];
      // Serialize each key in the object.
      for ( var name in data ) {
        if ( ! data.hasOwnProperty( name ) ) {
          continue;
        }
        var value = data[ name ];
        buffer.push(
          encodeURIComponent( name ) +
          "=" +
          encodeURIComponent( ( value == null ) ? "" : value )
        );
      }
      // Serialize the buffer and clean it up for transportation.
      var source = buffer
        .join( "&" )
        .replace( /%20/g, "+" )
        ;
      return( source );
    }
  }
)

参考

http://www.bennadel.com/blog/2615-posting-form-data-with-http-in-angularjs.htm

https://forum.ionicframework.com/t/ionic-framework-http-post-request/29195
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值