课时一: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. 删除指定路径下指定天数之前(以文件的创建日期为准)的文件:BAT + REG + Ritchie Lawrence 日期函数

    代码如下: @echo off::演示:删除指定路径下指定天数之前(以文件的创建日期为准)的文件.::如果演示结果无误,把del前面的echo去掉,即可实现真正删除.::本例调用了 Ritchie L ...

  2. 【USACO】Strolling Cows

    Strolling Cows 给定有 \(n\) 个点 \(n\) 条边的有向图,每个点的出度都为 \(1\),求图中的最大环. 显然入度为 \(0\) 的点不可能为最大环上的点,所以考虑删点. 然后 ...

  3. 秒懂Dubbo接口(原理篇)

    引言 背景 单一应用架构 垂直应用架构 分布式服务架构 流动计算架构 为什么要用 Dubbo? 什么是分布式? 为什么要分布式? Dubbo 的架构 Dubbo 的架构图解 Dubbo 工作原理 Du ...

  4. frida打印与参数构造

    title: frida打印与参数构造 categories: 逆向与协议分析 toc: true mathjax: true tags: frida HOOK 逆向 widgets: type: t ...

  5. 【Luogu】P1072 Hankson 的趣味题 题解

    原题链接 嗯...通过标签我们易得知,这是一道数学题(废话) 其中,题目给了这两个条件: \(gcd(x,a_0)=a_1,lcm(x,b_0)=b_1\) 所以,根据 \(gcd\) 与 \(lcm ...

  6. JDK 8 新增的 LongAdder,得过来看一下

    前言 在介绍 AtomicInteger 时,已经说明在高并发下大量线程去竞争更新同一个原子变量时,因为只有一个线程能够更新成功,其他的线程在竞争失败后,只能一直循环,不断的进行 CAS 尝试,从而浪 ...

  7. 使用netty实现im聊天

    简书地址图文更清晰: https://www.jianshu.com/p/f455814f3c40 1.新建maven工程2.引入maven依赖 <dependencies> <de ...

  8. php 之批量生成 mysql 语句 注释

    工作需要 需要更新 所有表的注释 不影响原结构之上进行更新 <?php class Ceshi extends CI_Controller{ function __construct() { p ...

  9. leetcode133:3sum-closest

    题目描述 给出含有n个整数的数组s,找出s中和加起来的和最接近给定的目标值的三个整数.返回这三个整数的和.你可以假设每个输入都只有唯一解. 例如,给定的整数 S = {-1 2 1 -4}, 目标值 ...

  10. STM32最小系统板OLED贪吃蛇

    上次用STM32F103最小系统板做了一个简单的OLED贪吃蛇小游戏,以下为游戏效果动图: 主要实现内容包括:贪吃蛇移动.方向控制.食物生成.分数处理.死亡判定. 这次想把自己的制作思路分享给大家,不 ...