Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: chili am 26.04.06 - 09:38:09

Titel: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: chili am 26.04.06 - 09:38:09
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:

Code
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!
Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: Glombi am 26.04.06 - 09:43:12
Hier im Forum gibt es bereits etliche Beiträge zum Thema Ajax - leider noch etwas verstreut. Suche einfach mal nach Ajax.

Es gibt insb. Links zu Seiten, auf denen auch Code und tiefergehende Beispiele stehen.

Andreas
Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: chili am 26.04.06 - 10:25:27
Ich habe mich mal umgeschaut aber leider nichts passendes gefunden. Im Prinzip wäre es in erster Linie interessant wie man mit JavaScript auf eine VIEW zugreifen - und dessen Inhalt auslesen kann.
Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: umi am 26.04.06 - 13:33:23
Zitat
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:

Schau mal unter http://www.codestore.net da hats ein paar beispiele zu AJAX.
Je nachdem wo Du das Script eingefügt hast kannst Du auf den Webdbname zugreifen.
Ich für meinen Teil habe meistens im Form ein Feld "Webdbname", Computed for display mit Formel @Webdbname. Auf dieses kann ich dann von JS aus zugreifen.

Allgemein kannst Du über die NotesURL's auf NotesObjekte zugreifen. Hast Du ja schon rausgefunden, z.B. via ReadViewentries kriegst Du die XML von ner Ansicht.

Alternativ kannst Du z.B. via ?OpenAgent einen Agenten auf dem Server ausführen. Die Rückgabewere vom Agent ( Print Statements im Agent) kannst Du dann via Xmlhttp.responseText auslesen.

Um Daten in eine View zu schreiben, musst Du ein Notesdokument erzeugen.

Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: flaite am 26.04.06 - 15:07:15
Du solltest debug-Techniken entwickeln, mit der du die URL an dieser Stelle
->
Code
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.
Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: animate am 26.04.06 - 20:08:16
Ich habe mich mal umgeschaut aber leider nichts passendes gefunden. Im Prinzip wäre es in erster Linie interessant wie man mit JavaScript auf eine VIEW zugreifen - und dessen Inhalt auslesen kann.

Das einzige Javascript, das du brauchst, ist das XmlHttpRequest-Objekt.
Mit ihm schickst du Anfragen an den Webserver, empfängst die Antworten und aktualisierst damit deine Seite (den DOM-Baum, den Axel schon genannt hat).

Welche Möglichkeiten es gibt, Anfragen an den Dominoserver über URLs zu schicken, steht hier (http://www-12.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf/f4b82fbb75e942a6852566ac0037f284/3f6664495cb1b6868525704a003f650f?OpenDocument).
Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: chili am 27.04.06 - 11:32:14
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: 

 
Code
 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.
 
Code
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


Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: flaite am 27.04.06 - 11:57:09
$('WebDBName_')
sieht nach Prototype Library aus?
Hast du die eingebunden?

Hier sind eine Menge Beispiele:
http://www.rhs.com/poweroftheschwartz/htdocs/lotusdominoajax.htm
Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: chili am 27.04.06 - 15:55:00
@ Axel Jannssen:

eingebunden habe ich die $('WebDBName_') nicht. Bin davon ausgegangen, dass es auch so funktionieren muss.
Kannst du mir bitte sagen an welcher Stelle und wie man dies einbinden muss?

Ich habe die URL mal eingegeben und erhalte eine XML ausgabe des Dokuments. D.h. der Zugriff auf die Datenbank über die VIEW funktioniert.
Jetzt muss im Prinzip nur noch das XML geparst werden damit ich dies im div ausgegeben kann...
Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: flaite am 27.04.06 - 16:52:26
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.
Zitat
D.h. der Zugriff
auf die Datenbank über die VIEW funktioniert.
Heisst aber nicht, dass die Variable url den von dir erwarteten Wert hat:
Code
 
 var url = '/' + $('WebDBName_').value + '/Messages?ReadViewEntries'; 
alert ("url=" + url)
Zitat
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.
Titel: Re: AJAX in Lotus Notes : VIEW auslesen
Beitrag von: animate am 27.04.06 - 17:27:54
Der gemeine Googler findet das hier (http://www.google.de/search?q=WebDBName_%27&start=0&ie=utf-8&oe=utf-8&meta=lr%3Dlang_de&client=firefox-a&rls=org.mozilla:de:official) und darüber dann das (http://www.assono.de/ajax.html). In der Datenbank solltest du dann finden, was das mit dem $('WebDBName_').value auf sich hat, denke ich.