scheduler ajax Modul
// Angenommen, die Antwort ist wie folgt
{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") {
// 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 in einem von zwei Formaten:
1) Ein RequestConfig Objekt, das die Anfrageeinstellungen enthält und wie folgt aussieht:
{
url: string,
method: "PUT|GET|POST|DELETE",
data: string | object,
async: true|false,
callback: function,
headers: object
}
Das bedeuten die einzelnen Eigenschaften:
oder:
2) Drei separate Parameter (außer bei der query() Methode, die nur das RequestConfig Objekt akzeptiert):
Nachfolgend die Liste der im ajax Modul API verfügbaren Methoden:
Alle Methoden unterstützen sowohl callbacks als auch promises zur Behandlung von Antworten.
Ein ajax Promise wird mit einem abgeschlossenen XmlHttpRequest Objekt aufgelöst:
scheduler.ajax.post({
url:"some.php",
data: {
paramName: "paramValue"
}
}).then(function(response){
alert(response.responseText);
});
Zur Abwärtskompatibilität erhält der callback die Antwort in einem etwas anderen Format:
scheduler.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 kann jede Anfragetyp verarbeiten, indem die Methode in den Parametern angegeben wird.
scheduler.ajax.query({
url:"some.php",
method:"POST",
data: {
paramName: "paramValue"
}
}).then(function(response){
alert(response.responseText);
});
Sendet eine GET-Anfrage.
scheduler.ajax.get("some.php", function(){
// Ihr Code hier
});
// oder
scheduler.ajax.get({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
});
Sendet eine PUT-Anfrage.
scheduler.ajax.put("server.php", "keep_alive=1&version=std", function(){
// Ihr Code hier
});
// oder
scheduler.ajax.put({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" },
data: {}
});
Sendet eine DELETE-Anfrage.
scheduler.ajax.del("server.php", function(){
// Ihr Code hier
});
// oder
scheduler.ajax.del({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" }
});
Sendet eine POST-Anfrage.
scheduler.ajax.post("server.php", "keep_alive=1&version=std", function(){
// Ihr Code hier
});
// oder
scheduler.ajax.post({
url: "https://…",
callback: function() {…},
headers: { "Content-Type": "application/json" },
data: {}
});
Wenn Sie post oder put verwenden, können Sie anstelle eines Strings ein Objekt als data übergeben. Das ajax Modul serialisiert das Objekt automatisch. Einfache Objekte werden als Formulardaten serialisiert (z.B. ¶m=value), während verschachtelte Strukturen mit JSON.stringify() serialisiert werden.
Beispielsweise wird das 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.
dhtmlxScheduler unterstützt promises (einschließlich IE8+). Intern wird die Bluebird Bibliothek für das Promise-Handling verwendet. Um ein Promise zu erstellen, verwenden Sie:
var promise = new scheduler.Promise(function(resolve, reject) {...});
Die Promise-Implementierung ist innerhalb von Scheduler scoped, also nicht global.
Das AJAX Modul gibt promises zurück, sodass Sie die Promise-Syntax anstelle von callbacks verwenden können. Zum Beispiel, anstatt
scheduler.ajax.post(url, params, callback);
können Sie schreiben
scheduler.ajax.post(url, params).then(function(){…});
Callbacks und promises können zusammen verwendet werden.
Hier ein Beispiel, um mehrere Anfragen gleichzeitig zu senden und dann die Daten neu zu laden, sobald alle abgeschlossen sind:
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");
});
added in version 6.0
Nach oben