Hallo,
ich möchte eine AJAX Anwendung in Lotus Domino 7 programmieren. Da ich Anfänger in Domino bin, habe ich anfangs mitbekommen das es PHP in Lotus gar nicht gibt ;) was mich natürlich etwas verunsichern tut, da viele AJAX Anwendungen auf PHP zurückgreifen. Als Einstieg möchte ich einen kleinen Chat-Room bauen, der über den Domino Server läuft.
Ich weiss leider momentan gar nicht so richtig wie ich anfangen soll. Speziell wie ich mittels dem XMLHttp-Request Daten aus Domino anfordern kann.
Bei einem Chat-Room muss ja der vom Nutzer eingegebene Text zwischengespeichert werden, bspw. in einer XML Datei oder in einer mysql DB. Diese Optionen stehen mir unter Domino nicht zur Verfügung. Unter Domino wird der Text in einer VIEW abgelegt.
Ich würde nun sehr gern wissen wie man auf den eingegegebenen Nachrichten-Text (also auf die VIEW über 'xmlHttp.open('GET', url , true) mittels XMLHttpRequest zugreifen kann?
Und natürlich andersherum, wie man mittels 'POST' Text in der VIEW ablegen kann...
Die Funktion zum Auslesen sieht folgendermaßen aus:
function loadData()
{
if (xmlHttp) {
var url = '/' + $('WebDBName_').value + '/Messages?ReadViewEntries';
xmlHttp.open('GET', url , true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
document.getElementById("asb_content").innerHTML = xmlHttp.responseText;
}
};
xmlHttp.send(null);
}
}
Die Zeile in der die Variable 'url' gesetzt wird ist leider nicht korrekt. Weiss jemand wie ich eine Verbindung zur view herstellen kann damit ich dessen Inhalt auslesen kann?
Schonmal Danke für eure Hilfe!
Du solltest debug-Techniken entwickeln, mit der du die URL an dieser Stelle
->
var url = '/' + $('WebDBName_').value + '/Messages?ReadViewEntries';
-> HIER
xmlHttp.open('GET', url , true);
rausschreiben kannst.
Das ist mittlerweile machbar. In codestore werden hierzu auch immer gute Tools genannt.
Ajax hat eigentlich überhaupt nichts mit php, Domino oder sonstwie zu tun. Es ist lediglich eine Browsertechnik, mit der in moderneren Browsern Teile der Seite asynchron nachgeladen werden können und in den DOM-Baum der Webseite eingehängt werden können (zumindest verstehe ich es so). Die nachgeladenen Daten werden in Form von xml, JSON oder geheimes_Rezept (Charles vom DrunkAndRetired-podcast) übermittelt.
Ich fänds aber auch gut, wenn hier mal jemand versucht, sich dem Thema per mini Tutorial oder sonstwie anzunähern.
Hallo! Schonmal danke für die Ratschläge, haben mir schon gut weitergeholfen :-)
Ich zeig Euch ambesten mal ein paar Quelltext-Ausschnitte. Meine Vorgehensweise:
(1) Form erstellt in der ich div-tags definiert habe. Im div 'content' soll der Inhalt der Datenbank über die VIEW angezeigt werden
(2) Die VIEW Messages enthält die Spalte Message
(3) abfrage.js:
window.onload=function() {
var url = '/' + $('WebDBName_').value + '/Messages?ReadViewEntries';
callServer('GET', url, true, 0, createCallFunctionWithXMLHandler('getMessage'));
} // Wie umi bereits gesagt erhalt man damit eine XML der Ansicht
(4) ajax.js
Funktion wird zurückgegeben, die als statusOKHandler aufgerufen werden kann, und eine Funktion mit der Request-Rückgabe (XML) aufruft.
function createCallFunctionWithXMLHandler(functionName) {
// übergebene Parameter prüfen
if (!pruefeParameter(functionName, 'Der Parameter "functionName" muss übergeben werden.')) return undefined;
// erzeuge neue Funktion und gib sie zurück
return new Function('request', functionName + '(request.responseXML);');
}
(5) abfrage.js
Wie muss nun die Funktion 'getmessage' aussehen mit der ich den Inhalt der VIEW in dem div anzeigen kann ???
Habt ihr eine Idee?
Wenn mich nicht alles täuchst ist auch die Zeile
var url = '/' + $('WebDBName_').value + '/Messages?ReadViewEntries';
noch nicht vollständig... :-[
bekomme immer einer Debug Fehler das kein Objekt übergeben wurde...
gruß, Mathias
eingebunden habe ich die $('WebDBName_') nicht. Bin davon ausgegangen, dass es auch so funktionieren muss.
Afaik ist $ keine Funktionalität von JavaScript sondern höchstwahrscheinlich eine Funktion der sehr beliebten js-Bibliothek prototype:
http://www.sitepoint.com/article/painless-javascript-prototype
Ich habe die URL mal eingegeben und erhalte eine XML ausgabe des Dokuments.
Das ist gut.
D.h. der Zugriff
auf die Datenbank über die VIEW funktioniert.
Heisst aber nicht, dass die Variable url den von dir erwarteten Wert hat:
var url = '/' + $('WebDBName_').value + '/Messages?ReadViewEntries';
alert ("url=" + url)
Jetzt muss im Prinzip nur noch das XML geparst werden damit ich dies im div ausgegeben kann...
... falls url den von dir erwarteten Wert hat.