gantt ajax Modul
// angenommen, die Antwort sieht so aus
{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") {
// Antwort ist 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") {
// Antwort ist ok
}
});
Alle Methoden akzeptieren Parameter auf eine von zwei Arten:
1) RequestConfig - ein Objekt mit Konfigurationsoptionen für die Anfrage, strukturiert wie folgt:
{
url: string,
method: "PUT|GET|POST|DELETE",
data: string | object,
async: true|false,
callback: function,
headers: object
}
wobei:
oder:
2) Drei Parameter (außer bei der query()-Methode, die nur das RequestConfig-Objekt akzeptiert):
Nachfolgend die Liste der verfügbaren Methoden der ajax Modul API:
Alle Methoden unterstützen sowohl Callbacks als auch Promises zur Verarbeitung von Antworten.
Ein ajax Promise wird mit einem abgeschlossenen XmlHttpRequest-Objekt aufgelöst:
gantt.ajax.post({
url:"some.php",
data: {
paramName: "paramValue"
}
}).then(function(response){
alert(response.responseText);
});
Aus Kompatibilitätsgründen erhält der Callback das Ergebnis in einem leicht abweichenden Format:
gantt.ajax.post({
url:"some.php",
data: {
paramName: "paramValue"
},
callback: function(result){
var response = result.xmlDoc;
alert(response.responseText);
}
});
Dies ist die allgemeine Methode zum Senden von Anfragen. Sie können jede HTTP-Methode in den Parametern angeben.
gantt.ajax.query({
url:"some.php",
method:"POST",
data: {
paramName: "paramValue"
}
}).then(function(response){
alert(response.responseText);
});
Sendet eine GET-Anfrage.
gantt.ajax.get("some.php", function(){
// Ihr Code hier
});
// oder
gantt.ajax.get({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
});
Sendet eine PUT-Anfrage.
gantt.ajax.put("server.php", "keep_alive=1&version=std", function(){
// Ihr Code hier
});
// oder
gantt.ajax.put({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" },
data: {}
});
Sendet eine DELETE-Anfrage.
gantt.ajax.del("server.php", function(){
// Ihr Code hier
});
// oder
gantt.ajax.del({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
});
Sendet eine POST-Anfrage.
gantt.ajax.post("server.php", "keep_alive=1&version=std", function(){
// Ihr Code hier
});
// oder
gantt.ajax.post({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" },
data: {}
});
Anstelle eines Strings können Sie ein Objekt als Daten an die post- und put-Methoden übergeben. Wenn ein Objekt übergeben wird, übernimmt das ajax Modul die Serialisierung automatisch. Einfache Objekte werden als Formulardaten (¶m=value) serialisiert, während verschachtelte Strukturen mit JSON.stringify() serialisiert werden.
Zum Beispiel wird das folgende Objekt:
{
id: 1,
text: "My Task",
users: [1,2,3]
}
in einen String wie id=1&text=My%20Task&users=%5B1%2C2%2C3%5D
umgewandelt.
dhtmlxGantt unterstützt Promises (einschließlich IE8+). Intern wird die Bluebird Promise-Bibliothek verwendet. Um ein Promise zu erstellen, verwenden Sie diesen Konstruktor:
var promise = new gantt.Promise(function(resolve, reject) {...});
Das Promise-Objekt ist innerhalb von Gantt definiert, nicht global.
Das AJAX-Modul gibt ein Promise zurück, sodass Sie die Promise-Syntax anstelle von Callbacks verwenden können. Zum Beispiel anstelle von:
gantt.ajax.post(url, params, callback);
können Sie schreiben:
gantt.ajax.post(url, params).then(function(){…});
Es ist möglich, sowohl Callbacks als auch Promises gemeinsam zu verwenden.
Das folgende Beispiel zeigt, wie mehrere Anfragen gleichzeitig gesendet werden und danach die Daten neu geladen werden:
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");
});
hinzugefügt in Version 4.0
Zurück nach oben