스케줄러 ajax 모듈
// 응답이 다음과 같다고 가정
{status: "ok", data: "value", data2: "value2"}
var xhr = scheduler.ajax;
// HTTP GET
xhr.get("server.php").then(function(response) {
var res = JSON.parse(response.responseText);
if (res && res.status == "ok") {
// 응답이 정상임
}
});
// HTTP POST
xhr.post({
url:"server.php",
data: {
paramName: "paramValue"
}
}).then(function(response){
var res = JSON.parse(response.responseText);
if (res && res.status == "ok") {
// 응답이 정상임
}
});
모든 메서드는 두 가지 형식 중 하나로 매개변수를 받습니다:
1) RequestConfig 객체, 요청 설정을 포함하며 다음과 같습니다:
{
url: string,
method: "PUT|GET|POST|DELETE",
data: string | object,
async: true|false
callback: function,
headers: object
}
각 속성의 의미는 다음과 같습니다:
또는:
2) 세 개의 개별 매개변수 (단, query() 메서드는 RequestConfig 객체만 받음):
아래는 ajax 모듈 API에서 사용할 수 있는 메서드 목록입니다:
모든 메서드는 콜백과 프로미스를 모두 지원하여 응답을 처리할 수 있습니다.
ajax 프로미스는 완료된 XmlHttpRequest 객체로 resolve 됩니다:
scheduler.ajax.post({
url:"some.php",
data: {
paramName: "paramValue"
}
}).then(function(response){
alert(response.responseText);
});
하위 호환성을 위해 콜백은 약간 다른 형식으로 응답을 받습니다:
scheduler.ajax.post({
url:"some.php",
data: {
paramName: "paramValue"
},
callback: function(result){
var response = result.xmlDoc;
alert(response.responseText);
}
});
요청을 보내는 일반적인 메서드입니다. 파라미터에서 method를 지정하여 모든 요청 유형을 처리할 수 있습니다.
scheduler.ajax.query({
url:"some.php",
method:"POST",
data: {
paramName: "paramValue"
}
}).then(function(response){
alert(response.responseText);
});
GET 요청을 보냅니다.
scheduler.ajax.get("some.php", function(){
// 여기에 코드 작성
});
// 또는
scheduler.ajax.get({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
});
PUT 요청을 보냅니다.
scheduler.ajax.put("server.php", "keep_alive=1&version=std", function(){
// 여기에 코드 작성
});
// 또는
scheduler.ajax.put({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
data: {}
});
DELETE 요청을 보냅니다.
scheduler.ajax.del("server.php", function(){
// 여기에 코드 작성
});
// 또는
scheduler.ajax.del({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
});
POST 요청을 보냅니다.
scheduler.ajax.post("server.php", "keep_alive=1&version=std", function(){
// 여기에 코드 작성
});
// 또는
scheduler.ajax.post({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
data: {}
});
post 또는 put을 사용할 때, 문자열 대신 객체를 데이터로 전달할 수 있습니다. ajax 모듈이 자동으로 객체를 직렬화합니다.
간단한 객체는 폼 데이터 형식(e.g. ¶m=value)으로 직렬화되고, 중첩 구조는 JSON.stringify()를 사용해 직렬화됩니다.
예를 들어, 다음 객체:
{
id: 1,
text: "My Task",
users: [1,2,3]
}
는 id=1&text=My%20Task&users=%5B1%2C2%2C3%5D
같은 문자열로 변환됩니다.
dhtmlxScheduler는 IE8 이상을 포함해 프로미스를 지원합니다. 내부적으로 Bluebird 라이브러리를 사용합니다.
프로미스를 생성하려면 다음과 같이 사용하세요:
var promise = new scheduler.Promise(function(resolve, reject) {...});
프로미스 구현은 Scheduler 내부에 범위가 제한되어 있으며 전역이 아닙니다.
AJAX 모듈은 프로미스를 반환하므로 콜백 대신 프로미스 문법을 사용할 수 있습니다. 예를 들어,
scheduler.ajax.post(url, params, callback);
대신
scheduler.ajax.post(url, params).then(function(){…});
를 사용할 수 있습니다.
콜백과 프로미스를 함께 사용할 수도 있습니다.
여러 요청을 동시에 보내고 모두 완료된 후 데이터를 다시 로드하는 예시는 다음과 같습니다:
scheduler.Promise.all([
scheduler.ajax.post({url: "api/event", data: event1}),
scheduler.ajax.post({url: "api/event", data: event2}),
scheduler.ajax.post({url: "api/event", data: event3})
]).then(function(){
scheduler.clearAll();
scheduler.load("/api");
});
버전 6.0에 추가됨
맨 위로