课时一:JS操作数据

JSAPI请求头

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

创建操作

提示:

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

创建单条记录

function createEntity(){
var entity = {}
entity['new_name'] = 'dtcc' //文本
entity['new_gender'] = 1000 //选项集
entity['new_time'] = new Date() //日期
entity['new_search@odata.bind'] = '/new_tbs(id)' //查找
entity['new_bool'] = true var req = new XMLHttpRequest()
req.open('post','url/accounts',false)
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function(){
if(this.readyState == 4){
if(this.status == 204){}
else{}
}
}
req.send(JSON.stringify(entity))
}

查询操作

提示:

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

查询全部

function getNameByPrimaryKey(){
var req = new XMLHttpRequest()
req.open('get','http://url/accounts',false)
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function(){
if(this.readyState == 4){
if(this.status == 204){
var result = JSON.parse(this.responseText)
}
else{}
}
}
}

根据主键查询

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

根据主键查询单个字段值

function getNameByPrimaryKey(){
var req = new XMLHttpRequest()
req.open('get','http://url/accounts(id)/name',false)
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function(){
if(this.readyState == 4){
if(this.status == 204){
var result = JSON.parse(this.responseText)
}
else{}
}
}
}

根据主键查询外键字段值

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

条件查询

  • 算术:eqnegtgeltle

    $filter=money lt 100
  • 逻辑:andornot

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

    $filter=contains(name,'nc')
function getNameByKey(){
var filter = '?$filter=contains(name,'nc')'
var req = new XMLHttpRequest()
req.open('get','http://url/accounts/'+filter,false)
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function(){
if(this.readyState == 4){
if(this.status == 204){
var result = JSON.parse(this.responseText)
}
else{}
}
}
}

排序

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

TOP

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

COUNT

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

更新操作

更新单条记录

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

更新记录的单个属性值

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

删除操作

删除单条记录

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

清空记录属性值

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. python的多线程和java的多线程之间的区别

    在python中,由于Cpython解释器的全局解释器的存在,那么多线程的话在同一时刻只能有一个线程执行,意思就是python中的多线程只能并发执行, 没有办法实现真正的并行,也就是无法利用多核CPU ...

  2. eyoucms破解授权/去版权插件

    插件描述:eyoucms内容管理系统的授权破解,可以去版权的插件,需要请自行关注. https://hbh.cool/find/136.html

  3. C#中的release和debug模式

    以下内容来源:https://www.cnblogs.com/rgjycs/p/9254332.html 在程序调试时的debug和release 网上有如下的描述:Debug 通常称为调试版本,它包 ...

  4. 【CF1443F】Identify the Operations 题解

    原题链接 题意简介 建议去原题看.这题意我表达不清楚. 大概就是给你一个 n 的排列,现在要求你进行 m 次操作. 每次操作,你会在现有的排列中删去一个数,然后选择其左边或右边的一个与之相邻的数加入 ...

  5. 动态链接的PLT与GOT

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/147 最近在研究缓冲区溢出攻击的试验,发现其中有一种方法叫做re ...

  6. pandas_01

    # Pandas 知识点总结 # Pandas数据结构:Series 和 DataFrame import pandas as pd import numpy as np # 一,Series: # ...

  7. InnoDB Insert Buffer(插入缓冲 转)

    一,插入缓冲(Insert Buffer/Change Buffer):提升插入性能 只对于非聚集索引(非唯一)的插入和更新有效,对于每一次的插入不是写到索引页中,而是先判断插入的非聚集索引页是否在缓 ...

  8. yum安装指定版本ceph包

    安装ceph包的方式有很多,这里讲的是从官网直接通过yum源的安装方式进行安装 yum源对应的地址为 http://download.ceph.com/rpm-hammer/el6/x86_64/ 怎 ...

  9. error while loading shared libraries解決方法

    在linux下运行程序时,发现了error while loading shared libraries这种错误,一时间不知道解决办法,在网上搜索,终于解决了. error while loading ...

  10. Rest语法,传入多个参数

    Rest语法,传入多个参数 js调用函数时可以传入任意数量的参数,而不报错.如果传入的参数没有用到,那么传入多余的参数没有任何用处,那不是瞎子点灯白费蜡嘛.为了充分利用传入的每一个参数,我们可以采用R ...