使用angularjs的$http.post异步提交数据时,服务器接收不了的问题
一,在正常情况下,使用表单的post方法提交数据,默认请求头的Content-Type:application/x-www-form-urlencoded类型,
提交数据格式如下:

二,使用angularjs的$http.post提交数据,使用的是Content-Type:application/json类型,
请求头格式如下:

直接代码块:
         app.controller('payCtrl',function($scope,$http){
             //保存邮箱地址
             $scope.emailEditSave=function(e){
                 e=e || window.event;
                 preventSubmit(e);
                 var yes=confirm('是否确认更改或者添加邮箱地址?');
                 if(yes ==true){
                     $http.post('http://localhost/html/angular_post.php',{email:"liang@163.com",cEmail:"liang@163.com"})
                             .success(function(resp){
                                 console.log(resp);
                             });
                 }
             };
         })
三,所以把angularjs默认的json类型定义为正常application/x-www-form-urlencoded类型,同时把提交的数据序列化
请求头如下:

直接代码块:
   var app=angular.module('payApp',[],function($httpProvider) {
             // Use x-www-form-urlencoded Content-Type
             $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
             /**
              * The workhorse; converts an object to x-www-form-urlencoded serialization.
              * @param {Object} obj
              * @return {String}
              */
             var param = function(obj) {
                 var query = '', name, value, fullSubName, subName, subValue, innerObj, i;
                 for(name in obj) {
                     value = obj[name];
                     if(value instanceof Array) {
                         for(i=0; i<value.length; ++i) {
                             subValue = value[i];
                             fullSubName = name + '[' + i + ']';
                             innerObj = {};
                             innerObj[fullSubName] = subValue;
                             query += param(innerObj) + '&';
                         }
                     }
                     else if(value instanceof Object) {
                         for(subName in value) {
                             subValue = value[subName];
                             fullSubName = name + '[' + subName + ']';
                             innerObj = {};
                             innerObj[fullSubName] = subValue;
                             query += param(innerObj) + '&';
                         }
                     }
                     else if(value !== undefined && value !== null)
                         query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
                 }
                 return query.length ? query.substr(0, query.length - 1) : query;
             };
             // Override $http service's default transformRequest
             $httpProvider.defaults.transformRequest = [function(data) {
                 return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
             }];
         });
         app.controller('payCtrl',function($scope,$http){
             //保存邮箱地址
             $scope.emailEditSave=function(e){
                 e=e || window.event;
                 preventSubmit(e);
                 var yes=confirm('是否确认更改或者添加邮箱地址?');
                 if(yes ==true){
                     $http.post('http://localhost/html/angular_post.php',{email:"liang@163.com",cEmail:"liang@163.com"})
                             .success(function(resp){
                                 console.log(resp);
                             });
                 }
             };
         })
         //阻止默认提交
         function preventSubmit(e){
             if(document.all){
                 e.returnValue;
             }else{
                 e.preventDefault();
             }
         }
主要是在angular.module()添加一个出来更改Content-type和序列化正常表单提交数据格式的函数,接着$http.post提交后的数据服务器就可正常获取。
使用angularjs的$http.post异步提交数据时,服务器接收不了的问题的更多相关文章
- ASP模拟POST请求异步提交数据的方法
		这篇文章主要介绍了ASP模拟POST请求异步提交数据的方法,本文使用MSXML2.SERVERXMLHTTP.3.0实现POST请求,需要的朋友可以参考下 有时需要获取远程网站的某些信息,而服务器又限 ... 
- jQuery选取所有复选框被选中的值并用Ajax异步提交数据
		昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来 ... 
- Android -- 提交数据到服务器,Get Post方式, 异步Http框架提交
		1. 发送请求到服务器有几种方式 (1)HttpURLConnection (2)Httpclient 同步框架 (3)AsyncHttpClient 异步框架 (https://github.com ... 
- JQuery中使用FormData异步提交数据和提交文件
		web中数据提交事件是常常发生的,但是大多数情况下我们不希望使用html中的form表单提交,因为form表单提交会中断当前浏览器的操作并且会调到另一个地址(即使这个地址是当前页面),并且会重复加载一 ... 
- POST提交数据时四种常见的数据格式
		最近项目部署到新环境tomcat+mysql,想看看项目部署成功没有,就用soupui调对应接口开测试,soupui使用比较简单,给上接口地址,入参xml报文,把入参的media Type设置为app ... 
- Android 采用HttpClient提交数据到服务器
		在前几篇文章中<Android 采用get方式提交数据到服务器><Android 采用post方式提交数据到服务器>介绍了android的两种提交数据到服务器的方法 本文继续介 ... 
- Android 采用post方式提交数据到服务器
		接着上篇<Android 采用get方式提交数据到服务器>,本文来实现采用post方式提交数据到服务器 首先对比一下get方式和post方式: 修改布局: <LinearLayout ... 
- Android 采用get方式提交数据到服务器
		首先搭建模拟web 服务器,新建动态web项目,servlet代码如下: package com.wuyudong.web; import java.io.IOException; import ja ... 
- curl提交数据时中文乱码
		1.使用curl提交数据时中文乱码解决: <?php $testJSON=array('name'=>'中文字符串','value'=>'test'); foreach ( $tes ... 
随机推荐
- 2016.04.11,英语,《Vocabulary Builder》Unit 12
			umbr, from the Latin umbra, 'shadow', umbrella, -ella, 'little', means 'little shadow'. adumbrate: [ ... 
- 何时使用static类(工具类)
			一个static类,指所有成员都是static方法构成的.而没有不论什么成员变量, 也称为Utility class 或者Utility Pattern [參考: Utility Pattern].它 ... 
- Windows下Go语言 幽灵蛛的配置
			这里是环境变量 目录结构 在这其中,我主要需要观察src 
- JDBC基础01
			今日知识 1. JDBC基本概念2. 快速入门3. 对JDBC中各个接口和类详解 JDBC: 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作 ... 
- BZOJ 3060 Kruskal
			思路: 把from&to都>k的直接加边 剩下的如果是一棵树就加. 否则ans++ (我的代码写的是反着的 不过意思都一样) //By SiriusRen #include <cs ... 
- Unity3d gameObject
			using UnityEngine; using System.Collections; public class test : MonoBehaviour { //print只能在MonoBehav ... 
- CI中的url相关函数以及路由设置和伪静态技术
			当使用CI框架进行开发时,我们的一些数据传递的URL不应该写死,可以使用如下方法:比如说我们需要表单提交一个数据: 1.在controller控制器中我们需要先创建一个加载helper和视图的方法: ... 
- [hihocoder][Offer收割]编程练习赛49
			相似颜色 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #includ ... 
- P1304 哥德巴赫猜想
			题目描述 输入N(N<=10000),验证4~N所有偶数是否符合哥德巴赫猜想. (N为偶数). 如果一个数,例如10,则输出第一个加数相比其他解法最小的方案.如10=3+7=5+5,则10=5+ ... 
- Java集合(一)HashMap
			HashMap 特点: HashMap的key和value都允许为空,无序的,且非线程安全的 数据结构: HashMap底层是一个数组,数组的每一项又都是链表,即数据和链表的结合体.当新建一个Hash ... 
