AngularJS与后端php的数据交互
来源:互联网 发布:gal一般用哪种编程语言 编辑:程序博客网 时间:2024/05/18 03:52
简述:
AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
它不仅仅是一个类库,而是提供了一个完整的框架。它避免了您和多个类库交互,需要熟悉多套接口的繁琐工作。它由Google Chrome的开发人员设计,引领着下一代Web应用开发。也许我们5年或10年后不会使用AngularJS,但是它的设计精髓将会一直被沿用。
问题及方案:
既然是前端框架,就免不了与后台的数据交互。本文讲解与PHP数据交互中的重点。
AngularJS的$http不管你使用的是POST还是PUT,默认的发送和请求数据格式都是json的,这个我们可以从它发送的http请求头中看到:Content-Type:application/json;charset=UTF-8。而PHP的GET或者POST接收的http请求数据却是:Content-Type:application/x-www-form-urlencoded;charset=UTF-8。
所以新手在使用AngularJS时候都会遇到这个问题,明明发送过来了,为什么我收不到数据?解决这个问题我们可以从两个方面入手:
一、在PHP中。
<?php$data = file_get_contents("php://input");echo $data;
这样你会发现。$data是一个json数据,之后PHP中你便可以对这个数据做其他处理了。
二、Angular中重构http请求。
var ws = angular.module("app",[function ($httpProvider) { $httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded;charset=utf-8"; $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; 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; }; $httpProvider.defaults.transformRequest = [function (data) { return angular.isObject(data) && String(data) !== "[object File]" ? param(data) : data; }];}]);
在构建app时直接重写$http,将其转化为我们常用的请求方式。这样之后就像普通的ajax请求一般了。
- AngularJS与后端php的数据交互
- Web 后端--PHP 与数据库的交互
- JS的Ajax与后端交互数据
- 如何使用angularJS与后端进行交互
- angularjs与PHP的交互通信问题
- 基于websocket的前端与后端之间的数据交互
- Unity3d 前端与后端之间的数据交互
- vue-Resource(与后端数据交互)
- 使用AngularJS的$http服务与服务端进行数据交互
- PHP后端接收不到AngularJs中$http.post发送的数据的问题
- 前后端交互的问题(php)
- AngularJS与服务端的交互
- angularJS与服务器端的交互
- 前端 ,后端 关于数据交互的问题
- jQuery和后端的JSON数据交互
- 实现前后端数据交互的方法
- PHP前后端交互
- 前端与后端的数据交互(jquery ajax+python flask)
- OpenCV玩九宫格数独(一)——九宫格图片中提取数字
- java 正则表达式 手机号 邮箱
- Android动画之——圆形进度条加波浪线
- 二十一、UI-Grid 单元格导航
- SpriteKit改变Node锚点其物理对象位置不正确的解决
- AngularJS与后端php的数据交互
- 桥接模式和NAT模式区别
- Android常用实例—Alert Dialog的使用
- Java的栈与堆
- webpack和gulp区别
- Android LayoutInflater讲解
- 为Android安装BusyBox —— 完整的bash shell
- 为了解决viewpager彻底删除fragment问题
- openshift搭建registry-持久存储nfs