課時一:JS操作數據
- 2020 年 11 月 30 日
- 筆記
- Dynamics 365
課時一: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['[email protected]'] = '/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','//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','//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','//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','//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','//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{}
}
}
}
排序
'//url/users?$select=name,revenue&$orderby=name asc,revenue desc&$filter=name eq 3'
TOP
'//url/users?top=3'
COUNT
'//url/users?count=true'
更新操作
更新單條記錄
function createEntity(){
var entity = {}
entity['new_name'] = 'dtcc' //文本
entity['new_gender'] = 1000 //選項集
entity['new_time'] = new Date() //日期
entity['[email protected]'] = '/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)