модуль ajax для gantt
// предполагая, что ответ выглядит следующим образом
{status: "ok", data: "value", data2: "value2"}
var xhr = gantt.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):
Список API модуля ajax приведён ниже:
Все методы допускают как обратные вызовы, так и промисы для обработки ответа.
Промис ajax возвращает завершенный XmlHttpRequest:
gantt.ajax.post({
url:"some.php",
data: {
paramName: "paramValue"
}
}).then(function(response){
alert(response.responseText);
});
По историческим причинам, опция обратного вызова получает значение в несколько ином формате:
gantt.ajax.post({
url:"some.php",
data: {
paramName: "paramValue"
},
callback: function(result){
var response = result.xmlDoc;
alert(response.responseText);
}
});
общий метод отправки запросов. Позволяет отправлять любой тип запроса (необходимо просто указать желаемый запрос в параметрах)
gantt.ajax.query({
url:"some.php",
method:"POST",
data: {
paramName: "paramValue"
}
}).then(function(response){
alert(response.responseText);
});
отправляет GET запрос
gantt.ajax.get("some.php", function(){
// ваш код здесь
});
// или
gantt.ajax.get({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
});
отправляет PUT запрос
gantt.ajax.put("server.php", "keep_alive=1&version=std", function(){
// ваш код здесь
});
// или
gantt.ajax.put({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" },
data: {}
});
отправляет DELETE запрос
gantt.ajax.del("server.php", function(){
// ваш код здесь
});
// или
gantt.ajax.del({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
});
отправляет POST запрос
gantt.ajax.post("server.php", "keep_alive=1&version=std", function(){
// ваш код здесь
});
// или
gantt.ajax.post({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" },
data: {}
});
Вы можете передать объект с данными вместо строки в методы post и put. В случае передачи объекта, модуль ajax сериализует его самостоятельно. Простой объект будет сериализован как данные формы (¶m=value), вложенные структуры будут сериализованы с помощью JSON.stringify().
Например, следующий объект:
{
id: 1,
text: "My Task",
users: [1,2,3]
}
будет преобразован в строку, которая выглядит как id=1&text=My%20Task&users=%5B1%2C2%2C3%5D
.
dhtmlxGantt поддерживает использование промисов (включая IE8+). Для работы с промисами Gantt использует библиотеку промисов Bluebird. Чтобы создать промис, необходимо использовать следующий конструктор:
var promise = new gantt.Promise(function(resolve, reject) {...});
Промис объявляется внутри Gantt, а не глобально для приложения.
Модуль AJAX возвращает промис, что позволяет использовать интерфейс промисов вместо обратного вызова. Таким образом, вместо использования
gantt.ajax.post(url, params, callback);
Например, при отправке POST запроса вы можете использовать следующую запись:
gantt.ajax.post(url, params).then(function(){…});
Возможно использовать обратные вызовы и промисы одновременно.
Пример ниже показывает, как вы можете отправить несколько запросов на сервер одновременно и перезагрузить данные после этого:
gantt.Promise.all([
gantt.ajax.post({url: "api/task", data: task1}),
gantt.ajax.post({url: "api/task", data: task2}),
gantt.ajax.post({url: "api/task", data: task3})
]).then(function(){
gantt.clearAll();
gantt.load("/api");
});
добавлено в версии 4.0
К началу