课时一:JS操作数据

JSAPI请求头

  1. xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
  2. xmlhttp.setRequestHeader("Accept", "application/json");
  3. xmlhttp.setRequestHeader("OData-MaxVersion", "4.0");
  4. xmlhttp.setRequestHeader("OData-Version", "4.0");
  5. // 加上成功返回201,省略成功返回204
  6. xmlhttp.setRequestHeader("Prefer", "return-representation");

创建操作

提示:

  • 日期类型:值为Date类型
  • 查找类型:字段后追加@odata.bind,值为/目标实体名(当前查找字段值id),目标实体名使用复数形式

创建单条记录

  1. function createEntity(){
  2. var entity = {}
  3. entity['new_name'] = 'dtcc' //文本
  4. entity['new_gender'] = 1000 //选项集
  5. entity['new_time'] = new Date() //日期
  6. entity['new_search@odata.bind'] = '/new_tbs(id)' //查找
  7. entity['new_bool'] = true
  8. var req = new XMLHttpRequest()
  9. req.open('post','url/accounts',false)
  10. req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
  11. req.setRequestHeader("Accept", "application/json");
  12. req.setRequestHeader("OData-MaxVersion", "4.0");
  13. req.setRequestHeader("OData-Version", "4.0");
  14. req.onreadystatechange = function(){
  15. if(this.readyState == 4){
  16. if(this.status == 204){}
  17. else{}
  18. }
  19. }
  20. req.send(JSON.stringify(entity))
  21. }

查询操作

提示:

  • select:显示记录中哪些字段
  • expand:指定此记录中查找类型的字段,找出此字段对应的记录
  • orderby:排序
  • filter:筛选
  • 多个关键字&符号连接

查询全部

  1. function getNameByPrimaryKey(){
  2. var req = new XMLHttpRequest()
  3. req.open('get','http://url/accounts',false)
  4. req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
  5. req.setRequestHeader("Accept", "application/json");
  6. req.setRequestHeader("OData-MaxVersion", "4.0");
  7. req.setRequestHeader("OData-Version", "4.0");
  8. req.onreadystatechange = function(){
  9. if(this.readyState == 4){
  10. if(this.status == 204){
  11. var result = JSON.parse(this.responseText)
  12. }
  13. else{}
  14. }
  15. }
  16. }

根据主键查询

  1. function getDataByPrimaryKey(){
  2. var req = new XMLHttpRequest()
  3. req.open('get','http://url/accounts(id)?$select=name,accountid&$expand=territoryid($select=description)',false)
  4. req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
  5. req.setRequestHeader("Accept", "application/json");
  6. req.setRequestHeader("OData-MaxVersion", "4.0");
  7. req.setRequestHeader("OData-Version", "4.0");
  8. req.onreadystatechange = function(){
  9. if(this.readyState == 4){
  10. if(this.status == 204){
  11. var result = JSON.parse(this.responseText)
  12. }
  13. else{}
  14. }
  15. }
  16. }

根据主键查询单个字段值

  1. function getNameByPrimaryKey(){
  2. var req = new XMLHttpRequest()
  3. req.open('get','http://url/accounts(id)/name',false)
  4. req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
  5. req.setRequestHeader("Accept", "application/json");
  6. req.setRequestHeader("OData-MaxVersion", "4.0");
  7. req.setRequestHeader("OData-Version", "4.0");
  8. req.onreadystatechange = function(){
  9. if(this.readyState == 4){
  10. if(this.status == 204){
  11. var result = JSON.parse(this.responseText)
  12. }
  13. else{}
  14. }
  15. }
  16. }

根据主键查询外键字段值

  • territoryid为查找类型,可以理解为一个实体记录
  1. function getNameByPrimaryKey(){
  2. var req = new XMLHttpRequest()
  3. req.open('get','http://url/accounts(id)/territoryid($select=description)',false)
  4. req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
  5. req.setRequestHeader("Accept", "application/json");
  6. req.setRequestHeader("OData-MaxVersion", "4.0");
  7. req.setRequestHeader("OData-Version", "4.0");
  8. req.onreadystatechange = function(){
  9. if(this.readyState == 4){
  10. if(this.status == 204){
  11. var result = JSON.parse(this.responseText)
  12. }
  13. else{}
  14. }
  15. }
  16. }

条件查询

  • 算术:eqnegtgeltle

    1. $filter=money lt 100
  • 逻辑:andornot

    1. $filter=money lt 100 and money lt 100
    2. $filter=not money lt 100
  • 模糊查询:containsendswithstartswith

    1. $filter=contains(name,'nc')
  1. function getNameByKey(){
  2. var filter = '?$filter=contains(name,'nc')'
  3. var req = new XMLHttpRequest()
  4. req.open('get','http://url/accounts/'+filter,false)
  5. req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
  6. req.setRequestHeader("Accept", "application/json");
  7. req.setRequestHeader("OData-MaxVersion", "4.0");
  8. req.setRequestHeader("OData-Version", "4.0");
  9. req.onreadystatechange = function(){
  10. if(this.readyState == 4){
  11. if(this.status == 204){
  12. var result = JSON.parse(this.responseText)
  13. }
  14. else{}
  15. }
  16. }
  17. }

排序

  1. 'http://url/users?$select=name,revenue&$orderby=name asc,revenue desc&$filter=name eq 3'

TOP

  1. 'http://url/users?top=3'

COUNT

  1. 'http://url/users?count=true'

更新操作

更新单条记录

  1. function createEntity(){
  2. var entity = {}
  3. entity['new_name'] = 'dtcc' //文本
  4. entity['new_gender'] = 1000 //选项集
  5. entity['new_time'] = new Date() //日期
  6. entity['new_search@odata.bind'] = '/new_tbs(id)' //查找
  7. entity['new_bool'] = true
  8. var req = new XMLHttpRequest()
  9. req.open('PATCH','url/accounts(Id)',false)
  10. req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
  11. req.setRequestHeader("Accept", "application/json");
  12. req.setRequestHeader("OData-MaxVersion", "4.0");
  13. req.setRequestHeader("OData-Version", "4.0");
  14. // 记录不存在则创建
  15. req.setRequestHeader("If-Match", "*");
  16. req.onreadystatechange = function(){
  17. if(this.readyState == 4){
  18. if(this.status == 204){}
  19. else{}
  20. }
  21. }
  22. req.send(JSON.stringify(entity))
  23. }

更新记录的单个属性值

  1. var entity = '{value:33}'
  2. req.open('PUT','url/accounts(Id)/name',false)
  3. req.send(JSON.stringify(entity))

删除操作

删除单条记录

  1. req.open('delete','url/accounts(Id)',false)

清空记录属性值

  1. req.open('delete','url/accounts(Id)/name',false)

HTTP.js

提示:

  • 参数必须JSON格式化:JSON.stringify(data)

课时一:JS操作数据的更多相关文章

  1. day82:luffy:课程详情页面显示&章节和课时显示&视频播放组件&CKEditor富文本编辑器

    目录 1.初始课程详情页面 2.视频播放组件 3.课程详情页面后端接口实现 4.课程详情页面-前端 5.CKEditor富文本编辑器 6.课程章节和课时显示-后端接口 7.课程章节和课时显示-前端 1 ...

  2. Jquery结合Ztree生成树

    尊重作者,附原文链接:http://my.oschina.net/u/2472104/blog/529055 Ztree的api http://www.ztree.me/v3/api.php Ztre ...

  3. web快速开发c/s软件构架

    很久没用.net winform 做东西,对控件相对比较陌生,另外控件的UI也不是那么好改.公司项目需要有web客户端,同时有软件客户端形式.考虑再三采用webBrowser+html 来实现 .用h ...

  4. es6的新特性--模板字符串

    这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...

  5. ThinkPHP5+Apicloud+vue商城APP实战

    ThinkPHP5+Apicoud+vue商城APP实战 目录 章节1:项目概述 课时1apicloud平台介绍.04:38 课时2知识体系架构介绍.16:10 章节2:apicloud50分钟快速入 ...

  6. es6学习笔记--模板字符串

    这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...

  7. sqler sql 转rest api javascript 试用

    sqler 内嵌了一个js 引擎的实现(基于goja,当我们配置了exec的配置之后 调用宏(redis 接口)或者rest api 的时候会有一个全局变量$result ,保存了执行的结果,我们可以 ...

  8. 前端之javascript2

    js组成和标签获取元素 javascript组成 1.ECMAscript javascript的语法(变量.函数.循环语句等语法)2.DOM 文档对象模型 操作html和css的方法(比如通过id或 ...

  9. [Tool] Give some magic ! 那些奇思妙想的 Chrome 插件

    [ Reggy ] - 网站注册类自动填充临时信息,Magic! 但是对于非常规的网站无效.是什么意思呢? 就是说,它不是常规的 form 表单,而是使用 Js 操作数据,所以任何插件都无法自动识别. ...

随机推荐

  1. Netty源码解析 -- 服务端启动过程

    本文通过阅读Netty源码,解析Netty服务端启动过程. 源码分析基于Netty 4.1 Netty是一个高性能的网络通信框架,支持NIO,OIO等多种IO模式.通常,我们都是使用NIO模式,该系列 ...

  2. 震惊!你还不知道SpringBoot真正的启动引导类

    引言 SpringBoot项目中的启动类,一般都是XXApplication,例如「StatsApplication」,「UnionApplication」. 每个项目的启动类名称都不一样.但是它的启 ...

  3. sharding-jdbc 分库分表的 4种分片策略,还蛮简单的

    上文<快速入门分库分表中间件 Sharding-JDBC (必修课)>中介绍了 sharding-jdbc 的基础概念,还搭建了一个简单的数据分片案例,但实际开发场景中要远比这复杂的多,我 ...

  4. 分四个阶段学习python并找到一份好工作

    第一阶段 关注公众号"轻松学编程"了解更多. 详细学习资料 需要时间一个月. 1.python概念 ​ python是一种解释型.面向对象.动态数据类型的高级程序语言. ​ 理解: ...

  5. DP百题练(一)

    目录 DP百题练(一) 线性 DP 简述 Arithmetic Progressions [ZJOI2006]物流运输 LG1095 守望者的逃离 LG1103 书本整理 CH5102 移动服务 LG ...

  6. 数据库会话数量过多,定期清理inactive会话

    1.1现象 存在一套11.2.0.4 RAC 2节点,数据库存在5000个会话数量,其中active正在执行的会话500个,其余均为非活跃会话. 大量inactive会话过多给Oracle数据库带来什 ...

  7. 14 RPC

    14 RPC RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些 ...

  8. php判断用户设备类型

    最近做的一个需求里面希望能判断用户访问页面的设备类型,根据不同的类型去加载不同的数据和页面样式.由于技术栈是使用的php,于是考虑在php层面去做这个判断. 假设主要判断的设备有平板和手机为主,分两个 ...

  9. 性能工具-CPU

  10. Python 自定义模块位置

    1.需要找出Python解释器从哪里查找模块: 具体方法: >>> import sys,pprint>>> pprint.pprint(sys.path)['', ...