샘플: JavaScript 및 jQuery와 함께 OData 끝점을 사용하여 만들기, 검색, 업데이트 및 삭제
게시 날짜: 2016년 11월
적용 대상: Dynamics CRM 2015
이 샘플 코드는 Microsoft Dynamics CRM 2015 및 Microsoft Dynamics CRM Online 2015 업데이트용입니다.Microsoft Dynamics CRM SDK 패키지를 다운로드합니다. 다운로드 패키지의 다음 위치에서 확인할 수 있습니다.
SampleCode\JS\RESTEndpoint\JQueryRESTDataOperations
중요
양식 스크립트 또는 리본 명령에서 jQuery를 사용하지 않는 것이 좋습니다.jQuery에 대한 종속성 없이 동일한 기능을 가진 샘플 라이브러리는 샘플: JavaScript와 함께 OData 끝점을 사용하여 만들기, 검색, 업데이트 및 삭제를 참조하십시오.
추가 정보:jQuery 사용.
참고
이 샘플이 어떻게 작동되는지 확인하려면 다운로드 파일에 포함된 JQueryRESTDataOperations_1_0_1_2_managed.zip 관리형 솔루션을 설치할(가져올) 수 있습니다. 그러면 JQuery REST 데이터 작업 솔루션이 설치됩니다. 이 관리형 솔루션을 설치하고 아래 이름을 사용하여 웹 리소스를 만들려면 관리형 솔루션을 제거(삭제)하지 않는 한 솔루션 게시자 사용자 지정 접두사는 "sample"일 수 없습니다.
요구 사항
이 샘플에서는 다음과 같은 리소스를 사용합니다.
sample_/JQueryRESTDataOperations.htm
이 HTML 페이지를 사용하여 샘플을 시작하고 작업 진행 상황을 봅니다. 이 페이지는 JQuery REST 데이터 작업 솔루션의 구성 페이지입니다.sample_/Scripts/jquery1.9.1.min.js
최소화된 버전의 jQuery에는 Microsoft Visual Studio 웹 응용 프로그램 프로젝트가 포함되어 있습니다. 이 라이브러리의 콘텐츠가 여기에 포함되어 있지 않습니다.sample_/Scripts/JQueryRESTDataOperationsSample.js
작업을 수행하는 JScript 웹 리소스입니다. 이 라이브러리는 SDK.JQuery.js 라이브러리에 종속됩니다.sample_/Scripts/SDK.JQuery.js
JQuery를 사용하는 REST 끝점으로 작업을 수행하기 위해 재사용 가능한 라이브러리가 포함된 JScript 웹 리소스입니다.참고
JQuery에 대한 종속성이 없는 유사한 라이브러리를 샘플: JavaScript와 함께 OData 끝점을 사용하여 만들기, 검색, 업데이트 및 삭제에서 사용할 수 있습니다.
참고
사용자 지정 접두사 “sample_”은 코드에 사용되지 않습니다. 이러한 샘플은 게시자의 사용자 지정 접두사를 사용하여 작동합니다. 하지만 시뮬레이션된 Scripts 폴더의 상대 경로는 웹 리소스 이름에 포함되어야 합니다.
보여 주기
이 샘플:
JScript 및 jQuery를 사용하여 REST 끝점을 사용하는 만들기, 검색, 업데이트 및 삭제 작업을 수행합니다.
$.ajax 메서드를 사용하여 데이터 작업을 수행하는 기능이 포함된 인기 많은 라이브러리인 jQuery를 사용합니다.
새 거래처 레코드에 대한 작업을 순차적으로 실행합니다.
이 샘플을 실행할 때 만든 레코드를 삭제할 수 있는 옵션이 있습니다.
웹 리소스를 미리 보면 다음과 같은 결과가 표시 됩니다. sample_/JQueryRESTDataOperations.htm
기본 연락처를 <시스템에 있는 첫 번째 연락처 레코드의 전체 이름> 으로 설정합니다.
선호 연락 방법을 전자 메일로 설정
연간 수익을 2백만으로 설정.
연락 방법 전화를 "허용 안 함"으로 설정하는 중입니다.
AccountId인 "7780cef2-fdf4-e011-9d26-00155dba3819"인 "거래처 이름 테스트"라는 거래처를 만들었습니다.
AccountId가 "7780cef2-fdf4-e011-9d26-00155dba3819"인 거래처를 검색 중입니다.
"거래처 이름 테스트"라는 거래처를 검색했습니다. 이 거래처가 만들어진 날짜: "10월 12일 수요일 11시 13분 56초 PDT 2011".
거래처 이름을 "업데이트된 거래처 이름:으로 변경하는 중입니다.
주소 정보를 추가하는 중입니다.
전자 메일 주소를 설정하는 중입니다.
거래처 레코드 변경 내용이 저장되었습니다.
거래처 레코드를 삭제하도록 선택했습니다.
거래처가 삭제되었습니다.
거래처를 삭제하지 않도록 선택하면 만든 레코드를 열 수 있는 링크가 표시됩니다.
sample_/JQueryRESTDataOperations.htm
이 페이지는 몇 가지 설명과 샘플을 시작하고 다시 설정하는 단추를 제공합니다.
<html lang="en-us">
<head>
<title>JQuery REST Data Operations</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<script src="Scripts/jquery_1.9.1.min.js"></script>
<script src="Scripts/SDK.JQuery.js" type="text/javascript"></script>
<script src="Scripts/JQueryRESTDataOperationsSample.js" type="text/javascript"></script>
<!-- /WebResources/ClientGlobalContext.js.aspx is accessed using a relative path
because the name of the Web Resource created from this file is "sample_/JQueryRESTDataOperationsSample.htm".
The use of the backslash within the name creates a virtual folder that must be considered
in relative links between Web Resources.
-->
<script type="text/javascript" src="../ClientGlobalContext.js.aspx"></script>
</head>
<body style="background-color: White; font-family:Segoe UI;">
<h1>JavaScript jQuery REST Data Operations Sample</h1>
<p>This page uses the <b>sample_/Scripts/JQueryRESTDataOperationsSample.js</b> JScript library to create, retrieve, and update an
account record. It also provides the option to delete or view the record.</p>
<p>The <b>sample_/Scripts/JQueryRESTDataOperationsSample.js</b> JScript library uses the <b>sample_/Scripts/SDK.JQuery.js</b> JScript library to perform the data operations.</p>
<p>Use the buttons below to verify the functionality of this sample.</p>
<button id="start" title="Click this button to start the sample.">
Start</button>
<button id="reset" title="Click this button to reset the sample." disabled="disabled">
Reset</button>
<ol id="output">
</ol>
</body>
</html>
sample_/Scripts/JQueryRESTDataOperationsSample.js
이 라이브러리에는 페이지의 UI 요소를 관리하는 기능과 샘플에서 수행되는 작업을 포함합니다. 이 라이브러리의 함수는 sample_/Scripts/SDK.JQuery.js에 있는 재사용 가능한 일반 메서드에 따라 다릅니다.
/// <reference path="SDK.JQuery.js" />
/// <reference path="jquery-1.9.1.js" />
var primaryContact = null;
var startButton;
var resetButton;
var output; //The <ol> element used by the writeMessage function to display text showing the progress of this sample.
$(function () {
getFirstContactToBePrimaryContact();
startButton = $("#start");
startButton.click(createAccount);
resetButton = $("#reset");
resetButton.click(resetSample);
output = $("#output");
});
function createAccount() {
startButton.attr("disabled", "disabled");
var account = {};
account.Name = "Test Account Name";
account.Description = "This account was created by the JQueryRESTDataOperations sample.";
if (primaryContact != null) {
//Set a lookup value
writeMessage("Setting the primary contact to: " + primaryContact.FullName + ".");
account.PrimaryContactId = { Id: primaryContact.ContactId, LogicalName: "contact", Name: primaryContact.FullName };
}
//Set a picklist value
writeMessage("Setting Preferred Contact Method to E-mail.");
account.PreferredContactMethodCode = { Value: 2 }; //E-mail
//Set a money value
writeMessage("Setting Annual Revenue to Two Million .");
account.Revenue = { Value: "2000000.00" }; //Set Annual Revenue
//Set a Boolean value
writeMessage("Setting Contact Method Phone to \"Do Not Allow\".");
account.DoNotPhone = true; //Do Not Allow
//Add Two Tasks
var today = new Date();
var startDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 3); //Set a date three days in the future.
var LowPriTask = { Subject: "Low Priority Task", ScheduledStart: startDate, PriorityCode: { Value: 0} }; //Low Priority Task
var HighPriTask = { Subject: "High Priority Task", ScheduledStart: startDate, PriorityCode: { Value: 2} }; //High Priority Task
account.Account_Tasks = [LowPriTask, HighPriTask]
//Create the Account
SDK.JQuery.createRecord(
account,
"Account",
function (account) {
writeMessage("The account named \"" + account.Name + "\" was created with the AccountId : \"" + account.AccountId + "\".");
writeMessage("Retrieving account with the AccountId: \"" + account.AccountId + "\".");
retrieveAccount(account.AccountId)
},
errorHandler
);
}
function retrieveAccount(AccountId) {
SDK.JQuery.retrieveRecord(
AccountId,
"Account",
null, null,
function (account) {
writeMessage("Retrieved the account named \"" + account.Name + "\". This account was created on : \"" + account.CreatedOn + "\".");
updateAccount(AccountId);
},
errorHandler
);
}
function updateAccount(AccountId) {
var account = {};
writeMessage("Changing the account Name to \"Updated Account Name\".");
account.Name = "Updated Account Name";
writeMessage("Adding Address information");
account.Address1_AddressTypeCode = { Value: 3 }; //Address 1: Address Type = Primary
account.Address1_City = "Sammamish";
account.Address1_Line1 = "123 Maple St.";
account.Address1_PostalCode = "98074";
account.Address1_StateOrProvince = "WA";
writeMessage("Setting E-Mail address");
account.EMailAddress1 = "someone@microsoft.com";
SDK.JQuery.updateRecord(
AccountId,
account,
"Account",
function () {
writeMessage("The account record changes were saved");
deleteAccount(AccountId);
},
errorHandler
);
}
function deleteAccount(AccountId) {
if (confirm("Do you want to delete this account record?")) {
writeMessage("You chose to delete the account record.");
SDK.JQuery.deleteRecord(
AccountId,
"Account",
function () {
writeMessage("The account was deleted.");
enableResetButton();
},
errorHandler
);
}
else {
var urlToAccountRecord = SDK.JQuery._getClientUrl() + "/main.aspx?etc=1&id=%7b" + AccountId + "%7d&pagetype=entityrecord";
$("<li><span>You chose not to delete the record. You can view the record </span><a href='" +
urlToAccountRecord +
"' target='_blank'>here</a></li>").appendTo(output);
enableResetButton();
}
}
function getFirstContactToBePrimaryContact() {
SDK.JQuery.retrieveMultipleRecords(
"Contact",
"$select=ContactId,FullName&$top=1",
function (results) {
var firstResult = results[0];
if (firstResult != null) {
primaryContact = results[0];
}
else {
writeMessage("No Contact records are available to set as the primary contact for the account.");
}
},
errorHandler,
function () {
//OnComplete handler
}
);
}
function errorHandler(error) {
writeMessage(error.message);
}
function enableResetButton() {
resetButton.removeAttr("disabled");
}
function resetSample() {
output.empty();
startButton.removeAttr("disabled");
resetButton.attr("disabled", "disabled");
}
//Helper function to write data to this page:
function writeMessage(message) {
$("<li>" + message + "</li>").appendTo(output);
}
sample_/Scripts/SDK.JQuery.js
이 라이브러리에는 다음 작업에 대한 공용 메서드가 포함되어 있습니다.
createRecord
retrieveRecord
updateRecord
deleteRecord
retrieveMultipleRecords
이러한 각 메서드에는 successCallback 및 errorCallback 매개 변수가 포함됩니다. 이러한 매개 변수는 데이터 작업이 성공하거나 실패하는 경우 호출되는 함수에 대한 참조를 허용합니다.
/// <reference path="jquery1.4.1vsdoc.js" />
if (typeof (SDK) == "undefined")
{ SDK = { __namespace: true }; }
SDK.JQuery = {
_context: function () {
///<summary>
/// Private function to the context object.
///</summary>
///<returns>Context</returns>
if (typeof GetGlobalContext != "undefined")
{ return GetGlobalContext(); }
else {
if (typeof Xrm != "undefined") {
return Xrm.Page.context;
}
else
{ throw new Error("Context is not available."); }
}
},
_getClientUrl: function () {
///<summary>
/// Private function to return the server URL from the context
///</summary>
///<returns>String</returns>
var serverUrl = this._context().getClientUrl()
return serverUrl;
},
_ODataPath: function () {
///<summary>
/// Private function to return the path to the REST endpoint.
///</summary>
///<returns>String</returns>
return this._getClientUrl() + "/XRMServices/2011/OrganizationData.svc/";
},
_errorHandler: function (req) {
///<summary>
/// Private function return an Error object to the errorCallback
///</summary>
///<param name="req" type="XMLHttpRequest">
/// The XMLHttpRequest response that returned an error.
///</param>
///<returns>Error</returns>
return new Error("Error : " +
req.status + ": " +
req.statusText + ": " +
JSON.parse(req.responseText).error.message.value);
},
_dateReviver: function (key, value) {
///<summary>
/// Private function to convert matching string values to Date objects.
///</summary>
///<param name="key" type="String">
/// The key used to identify the object property
///</param>
///<param name="value" type="String">
/// The string value representing a date
///</param>
var a;
if (typeof value === 'string') {
a = /Date\(([-+]?\d+)\)/.exec(value);
if (a) {
return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
}
}
return value;
},
_parameterCheck: function (parameter, message) {
///<summary>
/// Private function used to check whether required parameters are null or undefined
///</summary>
///<param name="parameter" type="Object">
/// The parameter to check;
///</param>
///<param name="message" type="String">
/// The error message text to include when the error is thrown.
///</param>
if ((typeof parameter === "undefined") || parameter === null) {
throw new Error(message);
}
},
_stringParameterCheck: function (parameter, message) {
///<summary>
/// Private function used to check whether required parameters are null or undefined
///</summary>
///<param name="parameter" type="String">
/// The string parameter to check;
///</param>
///<param name="message" type="String">
/// The error message text to include when the error is thrown.
///</param>
if (typeof parameter != "string") {
throw new Error(message);
}
},
_callbackParameterCheck: function (callbackParameter, message) {
///<summary>
/// Private function used to check whether required callback parameters are functions
///</summary>
///<param name="callbackParameter" type="Function">
/// The callback parameter to check;
///</param>
///<param name="message" type="String">
/// The error message text to include when the error is thrown.
///</param>
if (typeof callbackParameter != "function") {
throw new Error(message);
}
},
createRecord: function (object, type, successCallback, errorCallback) {
///<summary>
/// Sends an asynchronous request to create a new record.
///</summary>
///<param name="object" type="Object">
/// A JavaScript object with properties corresponding to the Schema name of
/// entity attributes that are valid for create operations.
///</param>
this._parameterCheck(object, "SDK.JQuery.createRecord requires the object parameter.");
///<param name="type" type="String">
/// The Schema Name of the Entity type record to create.
/// For an Account record, use "Account"
///</param>
this._stringParameterCheck(type, "SDK.JQuery.createRecord requires the type parameter is a string.");
///<param name="successCallback" type="Function">
/// The function that will be passed through and be called by a successful response.
/// This function can accept the returned record as a parameter.
/// </param>
this._callbackParameterCheck(successCallback, "SDK.JQuery.createRecord requires the successCallback is a function.");
///<param name="errorCallback" type="Function">
/// The function that will be passed through and be called by a failed response.
/// This function must accept an Error object as a parameter.
/// </param>
this._callbackParameterCheck(errorCallback, "SDK.JQuery.createRecord requires the errorCallback is a function.");
var jsonEntity = window.JSON.stringify(object);
$.ajax({ type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: this._ODataPath() + type + "Set",
data: jsonEntity,
beforeSend: function (xhr) {
//Specifying this header ensures that the results will be returned as JSON.
xhr.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, xhr) {
successCallback(data.d);
},
error: function (xhr, textStatus, errorThrown) {
errorCallback(SDK.JQuery._errorHandler(xhr));
}
});
},
retrieveRecord: function (id, type, select, expand, successCallback, errorCallback) {
///<summary>
/// Sends an asynchronous request to retrieve a record.
///</summary>
///<param name="id" type="String">
/// A String representing the GUID value for the record to retrieve.
///</param>
this._stringParameterCheck(id, "SDK.JQuery.retrieveRecord requires the id parameter is a string.");
///<param name="type" type="String">
/// The Schema Name of the Entity type record to retrieve.
/// For an Account record, use "Account"
///</param>
this._stringParameterCheck(type, "SDK.JQuery.retrieveRecord requires the type parameter is a string.");
///<param name="select" type="String">
/// A String representing the $select OData System Query Option to control which
/// attributes will be returned. This is a comma separated list of Attribute names that are valid for retrieve.
/// If null all properties for the record will be returned
///</param>
if (select != null)
this._stringParameterCheck(select, "SDK.JQuery.retrieveRecord requires the select parameter is a string.");
///<param name="expand" type="String">
/// A String representing the $expand OData System Query Option value to control which
/// related records are also returned. This is a comma separated list of of up to 6 entity relationship names
/// If null no expanded related records will be returned.
///</param>
if (expand != null)
this._stringParameterCheck(expand, "SDK.JQuery.retrieveRecord requires the expand parameter is a string.");
///<param name="successCallback" type="Function">
/// The function that will be passed through and be called by a successful response.
/// This function must accept the returned record as a parameter.
/// </param>
this._callbackParameterCheck(successCallback, "SDK.JQuery.retrieveRecord requires the successCallback parameter is a function.");
///<param name="errorCallback" type="Function">
/// The function that will be passed through and be called by a failed response.
/// This function must accept an Error object as a parameter.
/// </param>
this._callbackParameterCheck(errorCallback, "SDK.JQuery.retrieveRecord requires the errorCallback parameter is a function.");
var systemQueryOptions = "";
if (select != null || expand != null) {
systemQueryOptions = "?";
if (select != null) {
var selectString = "$select=" + select;
if (expand != null) {
selectString = selectString + "," + expand;
}
systemQueryOptions = systemQueryOptions + selectString;
}
if (expand != null) {
systemQueryOptions = systemQueryOptions + "&$expand=" + expand;
}
}
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: this._ODataPath() + type + "Set" + "(guid'" + id + "')" + systemQueryOptions,
beforeSend: function (xhr) {
//Specifying this header ensures that the results will be returned as JSON.
xhr.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, xhr) {
//JQuery does not provide an opportunity to specify a date reviver so this code
// parses the xhr.responseText rather than use the data parameter passed by JQuery.
successCallback(JSON.parse(xhr.responseText, SDK.JQuery._dateReviver).d);
},
error: function (xhr, textStatus, errorThrown) {
errorCallback(SDK.JQuery._errorHandler(xhr));
}
});
},
updateRecord: function (id, object, type, successCallback, errorCallback) {
///<summary>
/// Sends an asynchronous request to update a record.
///</summary>
///<param name="id" type="String">
/// A String representing the GUID value for the record to retrieve.
///</param>
this._stringParameterCheck(id, "SDK.JQuery.updateRecord requires the id parameter.");
///<param name="object" type="Object">
/// A JavaScript object with properties corresponding to the Schema Names for
/// entity attributes that are valid for update operations.
///</param>
this._parameterCheck(object, "SDK.JQuery.updateRecord requires the object parameter.");
///<param name="type" type="String">
/// The Schema Name of the Entity type record to retrieve.
/// For an Account record, use "Account"
///</param>
this._stringParameterCheck(type, "SDK.JQuery.updateRecord requires the type parameter.");
///<param name="successCallback" type="Function">
/// The function that will be passed through and be called by a successful response.
/// Nothing will be returned to this function.
/// </param>
this._callbackParameterCheck(successCallback, "SDK.JQuery.updateRecord requires the successCallback is a function.");
///<param name="errorCallback" type="Function">
/// The function that will be passed through and be called by a failed response.
/// This function must accept an Error object as a parameter.
/// </param>
this._callbackParameterCheck(errorCallback, "SDK.JQuery.updateRecord requires the errorCallback is a function.");
var jsonEntity = window.JSON.stringify(object);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "json",
data: jsonEntity,
url: this._ODataPath() + type + "Set" + "(guid'" + id + "')",
beforeSend: function (xhr) {
//Specifying this header ensures that the results will be returned as JSON.
xhr.setRequestHeader("Accept", "application/json");
//Specify the HTTP method MERGE to update just the changes you are submitting.
xhr.setRequestHeader("X-HTTP-Method", "MERGE");
},
success: function (data, textStatus, xhr) {
//Nothing is returned to the success function
successCallback();
},
error: function (xhr, textStatus, errorThrown) {
errorCallback(SDK.JQuery._errorHandler(xhr));
}
});
},
deleteRecord: function (id, type, successCallback, errorCallback) {
///<summary>
/// Sends an asynchronous request to delete a record.
///</summary>
///<param name="id" type="String">
/// A String representing the GUID value for the record to delete.
///</param>
this._stringParameterCheck(id, "SDK.JQuery.deleteRecord requires the id parameter.");
///<param name="type" type="String">
/// The Schema Name of the Entity type record to delete.
/// For an Account record, use "Account"
///</param>
this._stringParameterCheck(type, "SDK.JQuery.deleteRecord requires the type parameter.");
///<param name="successCallback" type="Function">
/// The function that will be passed through and be called by a successful response.
/// Nothing will be returned to this function.
/// </param>
this._callbackParameterCheck(successCallback, "SDK.JQuery.deleteRecord requires the successCallback is a function.");
///<param name="errorCallback" type="Function">
/// The function that will be passed through and be called by a failed response.
/// This function must accept an Error object as a parameter.
/// </param>
this._callbackParameterCheck(errorCallback, "SDK.JQuery.deleteRecord requires the errorCallback is a function.");
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: this._ODataPath() + type + "Set(guid'" + id + "')",
beforeSend: function (XMLHttpRequest) {
//Specifying this header ensures that the results will be returned as JSON.
XMLHttpRequest.setRequestHeader("Accept", "application/json");
//Specify the HTTP method DELETE to perform a delete operation.
XMLHttpRequest.setRequestHeader("X-HTTP-Method", "DELETE");
},
success: function (data, textStatus, xhr) {
// Nothing is returned to the success function.
successCallback();
},
error: function (xhr, textStatus, errorThrown) {
errorCallback(SDK.JQuery._errorHandler(xhr));
}
});
},
retrieveMultipleRecords: function (type, options, successCallback, errorCallback, OnComplete) {
///<summary>
/// Sends an asynchronous request to retrieve records.
///</summary>
///<param name="type" type="String">
/// The Schema Name of the Entity type records to retrieve
/// For an Account record, use "Account"
///</param>
this._stringParameterCheck(type, "SDK.JQuery.retrieveMultipleRecords requires the type parameter is a string.");
///<param name="options" type="String">
/// A String representing the OData System Query Options to control the data returned
/// Do not include the $top option, use the top parameters to set the maximum number of records to return.
///</param>
if (options != null)
this._stringParameterCheck(options, "SDK.JQuery.retrieveMultipleRecords requires the options parameter is a string.");
///<param name="successCallback" type="Function">
/// The function that will be passed through and be called for each page of records returned.
/// This function should loop through the results and push the records into an array.
/// </param>
this._callbackParameterCheck(successCallback, "SDK.JQuery.retrieveMultipleRecords requires the successCallback parameter is a function.");
///<param name="errorCallback" type="Function">
/// The function that will be passed through and be called by a failed response.
/// This function must accept an Error object as a parameter.
/// </param>
this._callbackParameterCheck(errorCallback, "SDK.JQuery.retrieveMultipleRecords requires the errorCallback parameter is a function.");
///<param name="OnComplete" type="Function">
/// The function that will be called when all the requested records have been returned.
/// No parameters are passed to this function.
/// </param>
this._callbackParameterCheck(OnComplete, "SDK.JQuery.retrieveMultipleRecords requires the OnComplete parameter is a function.");
var optionsString;
if (options != null) {
if (options.charAt(0) != "?") {
optionsString = "?" + options;
}
else
{ optionsString = options; }
}
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: this._ODataPath() + type + "Set" + optionsString,
beforeSend: function (XMLHttpRequest) {
//Specifying this header ensures that the results will be returned as JSON.
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, xhr) {
if (data && data.d && data.d.results) {
successCallback(JSON.parse(xhr.responseText, SDK.JQuery._dateReviver).d.results);
if (data.d.__next != null) {
var queryOptions = data.d.__next.substring((SDK.JQuery._ODataPath() + type + "Set").length);
SDK.JQuery.retrieveMultipleRecords(type, queryOptions, successCallback, errorCallback, OnComplete);
}
else
{ OnComplete(); }
}
},
error: function (xhr, textStatus, errorThrown) {
errorCallback(SDK.JQuery._errorHandler(xhr));
}
});
},
__namespace: true
};
참고 항목
JQuery
웹 리소스와 함께 OData 끝점 사용
샘플: JavaScript와 함께 OData 끝점을 사용하여 만들기, 검색, 업데이트 및 삭제
샘플: JavaScript와 함께 OData 끝점을 사용하여 여러 레코드 검색
기술 문서: REST 끝점과 함께 옵션 집합 옵션 사용 - JScript
© 2017 Microsoft. All rights reserved. 저작권 정보