第一次使用 AngularJs 的 $http 模块的时候,遇到过后台获取不到前台提交数据的问题,检查代码没有发现问题,先上代码。

js 代码

angular.module("newsApp", []).constant("newsInfoUrl", "/WebPage/Page/NewsInfo/").factory("newsService", function($http) {return {getNewsList: function (categoryId, callBack) {//请求后台数据 $http.post("/WebPage/Page/GetNewsList",//参数分类ID,后台获取不到
                    { id: categoryId }).then(function (resp) {callBack(resp);});} }}) .controller("newsListCtrl", ["$scope", "newsService", "newsInfoUrl", function($scope, newService, newsInfoUrl) {$scope.cId = "";var getNewsList = function() {newService.getNewsList($scope.cId, function(resp) {$scope.newsList = resp.data;});}$scope.newsInfoUrl = newsInfoUrl;$scope.reload = getNewsList;}]);

后台代码

        [HttpPost]public JsonResult GetNewsList(FormCollection collection){        //在这里 collection 里面没有数据var catrgoryId = collection["id"];var page = new PageContext{PageSize = 20};var cList = new ContentBusiness().GetContentList(string.Empty, catrgoryId, page);return Json(ConvertModel(cList));}

奇怪了,难道提交数据有问题?抓包看看

原来问题出在这里,我们平时用 jquery post 提交数据是以 form-data 的形式提交的,而 AngularJs 以 json 格式提交的,所以后台获取不到了。

问题找到了,解决就容易了。

解决方法 <一>  改后台,以参数的形式接收,不使用 FormCollection 或 Request.Form[]

        [HttpPost]public JsonResult GetNewsList(string id){ var page = new PageContext{PageSize = 20};var cList = new ContentBusiness().GetContentList(string.Empty, id, page);return Json(ConvertModel(cList));}

如果参数比较多,可以定义一个model对象,model对象的属性对应前台提交的参数,以model对象作为后台响应方法的参数。

解决方法 <二>  改AngularJs 提交数据的方式,使用 全局配置 配置$httpProvider 的 header 值,使用 transformRequest

          对提交数据进行序列化,把 json 对象更改为字符串。

     angular.module("newsApp", []).config(["$httpProvider", function ($httpProvider) {     //更改 Content-Type$httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded;charset=utf-8";$httpProvider.defaults.headers.post["Accept"] = "*/*";$httpProvider.defaults.transformRequest = function (data) { //把JSON数据转换成字符串形式if (data !== undefined) { return $.param(data);}return data;};}]).constant("newsInfoUrl", "/WebPage/Page/NewsInfo/").factory("newsService", function ($http) {return {getNewsList: function (categoryId, callBack) {$http.post("/WebPage/Page/GetNewsList", {id: categoryId}).then(function (resp) {callBack(resp);});}}})    .controller("newsListCtrl", ["$scope", "newsService", "newsInfoUrl", function($scope, newService, newsInfoUrl) {$scope.cId = "";var getNewsList = function() {newService.getNewsList($scope.cId, function(resp) {$scope.newsList = resp.data;});}$scope.newsInfoUrl = newsInfoUrl;$scope.reload = getNewsList;}]);

转载于:https://www.cnblogs.com/fengh/p/6148779.html

AngularJs $http.post 数据后台获取不到数据问题 的解决过程相关推荐

  1. 股票level2数据接口获取逐笔成交数据的过程

    描述:通过股票level2数据接口获取逐笔成交数据的过程 地点:https://gitee.com/l2gogogo 获取过程: /// <summary> /// 获取逐笔成交数据 // ...

  2. 解析xml数据存入bean映射到数据库的 需求解决过程

    解析xml数据存入bean映射到数据库的 需求解决过程 2017年12月19日 15:18:57 守望dfdfdf 阅读数:419 标签: xmlbean 更多 个人分类: 工作 问题 编辑 版权声明 ...

  3. 按某一列统计重复数据,并获取对应行数据

    文章目录 一.实现思路 二.实例分析 三.编写代码 四.写入文件 一.实现思路 读取文件–按列分组–获取对应行数据 二.实例分析 需求:按县统计人数,统计结果使用"省市县/区"描述 ...

  4. JAVA8根据List对象属性获取重复数据和获取去重后数据

    获取重复数据 List<String> uniqueList = tempList.stream().collect(Collectors.groupingBy(TAreaEntity:: ...

  5. python处理期货数据_获取和讯期货数据(Python版本)

    获取和讯期货数据(Python版本) 获取和讯期货数据(Python版本) Author: edwardgyw, Date: 2016-11-28 14:38:44 Tags: Python 扩展 商 ...

  6. oracle寻找第一条数据,oracle 获取第一条数据

    关于取第一条数据的sql特此作了一个例子如下: SELECT * FROM tableName where fd_rt = 'A' --and rownum=1 ORDER BY fd_date DE ...

  7. matlab 获取雅虎数据,pandas获取雅虎金融数据

    pandas.jpg 首先,强烈推荐关注Dr. Fish, 每篇文章都很有深度.因为受到她<用Python浅析股票数据>文章的启发,所以分享下最近几天学习获取股票交易历史数据的总结. 首先 ...

  8. 股票实时数据 python_Tushare 获取股票实时数据

    Tushare 获取股票实时数据 自己实现了一个能获取股票实时交易数据的脚本,功能是每3秒钟获取当前大盘涨跌,和自己添加股票的价格和涨跌幅 原理是通过获取Tushare 平台提供的api,来获取股票数 ...

  9. 微信小程序 JS中遍历后台获取的data数据并赋值

    开发场景: 需要把后台Java端查询到的图片动态显示在页面上. Java端传过来的图片是base64类型的,前一篇文章已经介绍怎么把base64 转为图片.https://blog.csdn.net/ ...

  10. java数据返回到界面,java后台获取网页ajax数据和返回数据简单源码

    呼唤远方 1新建一个servlet xml中相应配置(一般自动)2创建service方法3接受参数,做操作,返回数据比如页面发送ajax请求到SomeServlet$.post("SomeS ...

最新文章

  1. 阿里首次公开量子通信技术 为20年后做准备
  2. 腾讯云服务器搭建WampServer环境
  3. QT 在定义新的类型时候,注意了(定义了ReadXml),在实现的时候加上Qlabel
  4. animation动画不生效_SwiftUI动画(1)之Animatable
  5. 2019 ICPC World Finals Problem J. Miniature Golf
  6. AGC023F - 01 on Tree
  7. 渐变色--浏览器兼容性
  8. C语言课后习题(24)
  9. cmd 日志刷新卡屏
  10. 天涯社区用到的日历函数
  11. 软著的代码怎么写?软件著作权提交源代码文件有什么要求?
  12. 查看源代码的几种方法
  13. 在Vue中使用高德地图
  14. 检查给定串是否存在于由区间及点集的结合内
  15. Purism FAQ
  16. App广告投放数据统计
  17. 《时は,走り出す》-《时光奔流》 EVA同人·绝品老文……
  18. 2022年成都粘胶纤维产业申报条件、材料、流程
  19. 《Python之禅》——原文和翻译
  20. 计算机二级成绩为什么验证码错误,计算机二级考试成绩查询的验证码为什么总是错误...

热门文章

  1. CNCC|AI大模型开源开放生态技术论坛,助力多领域AI生态发展
  2. 墨羽卿画第二章第7节:跬步
  3. 计算机专业毕业设计工作日志,计算机科学技术系毕业设计工作日志.doc
  4. 【IPD流程学习 二】IPD主要流程
  5. 从SLAM到视觉识别、VIO,大牛分享!
  6. 网站别黑了怎么解决?如何处理网站被黑问题详解
  7. ASPCMS网站通用标签基本标签
  8. 未来几年,自动化发展趋势展望
  9. 程序员的福利:使用WebCollector爬取某美女网站上的图片
  10. linux加静态路由命令,LINUX添加静态路由