In MS CRM 2016, Web API introduced to perform operations on MS CRM using JavaScript.
function retrieveSingleRecord (entityDefinitions,
recordId) {
/// <summary>
/// Retrieving
single record using Web API by record ID.
/// </summary>
/// <param
name="entityDefinitions" type="string">
/// EntitySetName
(ex:for Account entity, the entity set name is accounts)
/// </param>
/// <param
name="recordId" type="string">
/// A string
represents a guid for record Id.
/// </param>
/// <returns
type="Object" />
recordId = recordId.replace(/[\{\}]+/g, '');
var apiUrl = Xrm.Page.context.getClientUrl()
+ "/api/data/v8.1/" + entityDefinitions + "(" + recordId + ")";
var req = GetRequestObject();
if (req != null) {
req.open("GET", apiUrl, false);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json;
charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue");
req.send(null);
var
requestResults = JSON.parse(req.response)
return requestResults;
}
return false;
}
//**************************************************************************
function retrieveSingleRecord_WithCallBack
(entityDefinitions, recordId, successCallBackFun) {
/// <summary>
/// Retrieving
single record using Web API by record ID with callback function.
/// </summary>
/// <param
name="entityDefinitions" type="string">
/// EntitySetName
(ex:for Account entity, the entity set name is accounts)
/// </param>
/// <param
name="recordId" type="string">
/// A string
represents a guid for record Id.
/// </param>
/// <param
name="successCallBackFun" type="function">
/// callback
function.
/// </param>
/// <returns
type="void" />
recordId = recordId.replace(/[\{\}]+/g, '');
var apiUrl = Xrm.Page.context.getClientUrl()+ "/api/data/v8.1/" + entityDefinitions + "(" + recordId + ")";
//Ex:https://vvvvv.crm4.dynamics.com/api/data/v8.2/accounts(A0A00F3A-1166-E711-80E1-3863BB343B78)
var req = new XMLHttpRequest();
req.open("GET",
apiUrl, true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue");
req.onreadystatechange = function
() {
if
(this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var result = JSON.parse(this.response);
//alert(result["name"]);
successCallBackFun(result);
}
else {
alert(this.statusText);
}
}
};
req.send();
}
//**************************************************************************
function retrieveMultiple (entityDefinitions,
filterUrl) {
/// <summary>
/// Retrieving
multiple records based on specific filter criteria.
/// </summary>
/// <param
name="entityDefinitions" type="string">
/// EntitySetName
(ex:for Account entity, the entity set name is accounts)
/// </param>
/// <param
name="filterUrl" type="string">
/// a string url to
specify filter criteria using $filter(ex:$filter=cusomerid eq cusomeridvalue).
/// </param>
/// <returns
type="Object" />
var apiUrl = Xrm.Page.context.getClientUrl() + "/api/data/v8.1/" + entityDefinitions + "?" + filterUrl + "&$count=true";
var req = GetRequestObject();
if (req != null) {
req.open("GET", apiUrl, false);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json;
charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue");
req.send(null);
var
requestResults = JSON.parse(req.response)
return requestResults;
}
return false;
}