摘要

在angularjs发送post请求的时候,确实很困惑,在传递json数据的时候,总会遇到在服务端无法接受到参数的情况,这里有必要与$.post进行比较学习一下。
一个例子
这里模拟登录的一个场景,post用户名与密码,服务端接受账户并直接返回到客户端不做其它业务处理。
使用angularjs版本
/* AngularJS v1.2.15 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */
服务端
public class AccountController : Controller
{
// GET: /<controller>/
public IActionResult Login()
{
return View();
}
[HttpPost]
public IActionResult Login(string userName,string userPwd)
{
var resut = Request.Form;
return Json(new { _code = 200, _msg = "Login success", name = userName, password = userPwd });
}
}
$.post
首先使用$.post的方式,直接提交账户密码
$.post("@Url.Content("~/Account/Login")",{ userName: "2342342", userPwd:"2sssdfs" },function (data) {
console.log(data);
});
响应
这里我们看一下请求体
那么我们现在看看angularjs的$http.post的情况,到底区别在哪儿?
@{
Layout = null;
}
<!DOCTYPE html>
<html ng-app="login">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>IT怪O 用户登录</title>
<link href="~/lib/bootstrap/dist/css/bootstrap.css" rel="external nofollow" rel="stylesheet" />
<script src="~/js/angular.min.js"></script>
<script>
angular.module("login", []).controller("LoginController", function ($http, $scope) {
$scope.Login = function () {
var data = { userName: $scope.userName, userPwd: $scope.userPwd };
var config = {
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("&");
//}
};
console.log(data);
$http.post("@Url.Content("~/Account/Login")", data, config).success(function (data) {
console.log(data);
});
};
});
</script>
</head>
<body>
<div ng-controller="LoginController">
<input type="text" placeholder="用户名" ng-model="userName" value="" />
<input type="password" placeholder="密码" ng-model="userPwd" value="" />
<button ng-click="Login()">登录</button>
</div>
</body>
</html>
登录
出现了,处于习惯的原因,平时就会这样来写$http.post的。但结果并不是想要的。那么咱们与$.post对比一下请求体。
看到没?差别就在这里。
发现问题了,那么我们就要转化为$.post提交参数的方式。幸好,angularjs中$http.post提供了一个转化参数的transformRequest方法,可以在config中加上该参数:
var config = {
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("&");
}
};
它的作用就是将提交的参数转化为$.post提交参数的方式。这样看到的请求体中参数就与$.post相同了。
可以在全局进行设置
<script>
angular.module("login", []).controller("LoginController", function ($http, $scope) {
$scope.Login = function () {
var data = { userName: $scope.userName, userPwd: $scope.userPwd };
console.log(data);
$http.post("@Url.Content("~/Account/Login")", data).success(function (data) {
console.log(data);
});
};
}).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; charset=utf-8';
});
</script>
总结
angularjs在进行post请求的时候要进行参数配置。关于angularjs的post请求,建议在初始化模块的时候对post请求设置请求头与请求参数转换的设置,这样可以在其他地方方便使用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angularjs
# http
# post
# angularjs的http
# 解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
# 对比分析AngularJS中的$http.post与jQuery.post的区别
# Angularjs中$http以post请求通过消息体传递参数的实现方法
# 后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
# AngularJS下$http服务Post方法传递json参数的实例
# AngularJS $http模块POST请求实现
# AngularJS $http post 传递参数数据的方法
# angularJS 发起$http.post和$http.get请求的实现方法
# AngularJS封装$http.post()实例详解
# Angular利用HTTP POST下载流文件的步骤记录
# 服务端
# 转化为
# 就会
# 总会
# 有必要
# 不做
# 我们现在
# 看一下
# 用户登录
# 大家多多
# 就与
# 来写
# 出现了
# 客户端
# 平时
# 就在这里
# _code
# Json
# Form
# userPwd
相关文章:
建站之星代理费用多少?最新价格详情介绍
如何自定义建站之星网站的导航菜单样式?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
盐城做公司网站,江苏电子版退休证办理流程?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速启动建站代理加盟业务?
如何撰写建站申请书?关键要点有哪些?
如何高效利用亚马逊云主机搭建企业网站?
建站主机选哪种环境更利于SEO优化?
如何使用Golang table-driven基准测试_多组数据测量函数效率
简历在线制作网站免费版,如何创建个人简历?
建站之星代理商如何保障技术支持与售后服务?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
淘宝制作网站有哪些,淘宝网官网主页?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
如何制作网站标识牌,动态网站如何制作(教程)?
如何配置FTP站点权限与安全设置?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
如何快速搭建虚拟主机网站?新手必看指南
自助网站制作软件,个人如何自助建网站?
如何快速搭建高效香港服务器网站?
如何用美橙互联一键搭建多站合一网站?
湖北网站制作公司有哪些,湖北清能集团官网?
如何用免费手机建站系统零基础打造专业网站?
如何在云主机上快速搭建多站点网站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何在企业微信快速生成手机电脑官网?
建站之星如何实现五合一智能建站与营销推广?
建站主机功能解析:服务器选择与快速搭建指南
山东云建站价格为何差异显著?
如何通过虚拟主机快速完成网站搭建?
,想在网上投简历,哪几个网站比较好?
如何快速上传自定义模板至建站之星?
如何选择PHP开源工具快速搭建网站?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
如何配置WinSCP新建站点的密钥验证步骤?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
如何选择CMS系统实现快速建站与SEO优化?
建站之星如何快速更换网站模板?
制作网站的基本流程,设计网站的软件是什么?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何批量查询域名的建站时间记录?
股票网站制作软件,网上股票怎么开户?
建站之星如何实现网站加密操作?
如何在IIS7上新建站点并设置安全权限?
如何快速完成中国万网建站详细流程?
广德云建站网站建设方案与建站流程优化指南
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
建站主机无法访问?如何排查域名与服务器问题
php json中文编码为null的解决办法
*请认真填写需求信息,我们会在24小时内与您取得联系。