课时一:JS操作数据
课时一: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{}
}
}
}
条件查询
算术:
eq
,ne
,gt
,ge
,lt
,le
$filter=money lt 100
逻辑:
and
,or
,not
$filter=money lt 100 and money lt 100
$filter=not money lt 100
模糊查询:
contains
,endswith
,startswith
$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操作数据的更多相关文章
- day82:luffy:课程详情页面显示&章节和课时显示&视频播放组件&CKEditor富文本编辑器
目录 1.初始课程详情页面 2.视频播放组件 3.课程详情页面后端接口实现 4.课程详情页面-前端 5.CKEditor富文本编辑器 6.课程章节和课时显示-后端接口 7.课程章节和课时显示-前端 1 ...
- Jquery结合Ztree生成树
尊重作者,附原文链接:http://my.oschina.net/u/2472104/blog/529055 Ztree的api http://www.ztree.me/v3/api.php Ztre ...
- web快速开发c/s软件构架
很久没用.net winform 做东西,对控件相对比较陌生,另外控件的UI也不是那么好改.公司项目需要有web客户端,同时有软件客户端形式.考虑再三采用webBrowser+html 来实现 .用h ...
- es6的新特性--模板字符串
这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...
- ThinkPHP5+Apicloud+vue商城APP实战
ThinkPHP5+Apicoud+vue商城APP实战 目录 章节1:项目概述 课时1apicloud平台介绍.04:38 课时2知识体系架构介绍.16:10 章节2:apicloud50分钟快速入 ...
- es6学习笔记--模板字符串
这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...
- sqler sql 转rest api javascript 试用
sqler 内嵌了一个js 引擎的实现(基于goja,当我们配置了exec的配置之后 调用宏(redis 接口)或者rest api 的时候会有一个全局变量$result ,保存了执行的结果,我们可以 ...
- 前端之javascript2
js组成和标签获取元素 javascript组成 1.ECMAscript javascript的语法(变量.函数.循环语句等语法)2.DOM 文档对象模型 操作html和css的方法(比如通过id或 ...
- [Tool] Give some magic ! 那些奇思妙想的 Chrome 插件
[ Reggy ] - 网站注册类自动填充临时信息,Magic! 但是对于非常规的网站无效.是什么意思呢? 就是说,它不是常规的 form 表单,而是使用 Js 操作数据,所以任何插件都无法自动识别. ...
随机推荐
- 删除指定路径下指定天数之前(以文件的创建日期为准)的文件:BAT + REG + Ritchie Lawrence 日期函数
代码如下: @echo off::演示:删除指定路径下指定天数之前(以文件的创建日期为准)的文件.::如果演示结果无误,把del前面的echo去掉,即可实现真正删除.::本例调用了 Ritchie L ...
- 【USACO】Strolling Cows
Strolling Cows 给定有 \(n\) 个点 \(n\) 条边的有向图,每个点的出度都为 \(1\),求图中的最大环. 显然入度为 \(0\) 的点不可能为最大环上的点,所以考虑删点. 然后 ...
- 秒懂Dubbo接口(原理篇)
引言 背景 单一应用架构 垂直应用架构 分布式服务架构 流动计算架构 为什么要用 Dubbo? 什么是分布式? 为什么要分布式? Dubbo 的架构 Dubbo 的架构图解 Dubbo 工作原理 Du ...
- frida打印与参数构造
title: frida打印与参数构造 categories: 逆向与协议分析 toc: true mathjax: true tags: frida HOOK 逆向 widgets: type: t ...
- 【Luogu】P1072 Hankson 的趣味题 题解
原题链接 嗯...通过标签我们易得知,这是一道数学题(废话) 其中,题目给了这两个条件: \(gcd(x,a_0)=a_1,lcm(x,b_0)=b_1\) 所以,根据 \(gcd\) 与 \(lcm ...
- JDK 8 新增的 LongAdder,得过来看一下
前言 在介绍 AtomicInteger 时,已经说明在高并发下大量线程去竞争更新同一个原子变量时,因为只有一个线程能够更新成功,其他的线程在竞争失败后,只能一直循环,不断的进行 CAS 尝试,从而浪 ...
- 使用netty实现im聊天
简书地址图文更清晰: https://www.jianshu.com/p/f455814f3c40 1.新建maven工程2.引入maven依赖 <dependencies> <de ...
- php 之批量生成 mysql 语句 注释
工作需要 需要更新 所有表的注释 不影响原结构之上进行更新 <?php class Ceshi extends CI_Controller{ function __construct() { p ...
- leetcode133:3sum-closest
题目描述 给出含有n个整数的数组s,找出s中和加起来的和最接近给定的目标值的三个整数.返回这三个整数的和.你可以假设每个输入都只有唯一解. 例如,给定的整数 S = {-1 2 1 -4}, 目标值 ...
- STM32最小系统板OLED贪吃蛇
上次用STM32F103最小系统板做了一个简单的OLED贪吃蛇小游戏,以下为游戏效果动图: 主要实现内容包括:贪吃蛇移动.方向控制.食物生成.分数处理.死亡判定. 这次想把自己的制作思路分享给大家,不 ...