AJAX
AJAX (asynchrones JavaScript und XML) ist eine Gruppe von miteinander verbundenen, clientseitigen Entwicklungstechniken, die zum Erstellen asynchroner Webanwendungen verwendet werden.
AJAX ermöglicht Webanwendungen das Senden und Abrufen von Informationen an einen Server im Hintergrund, ohne die Anwender-Experience mit der angezeigten Webseite zu beeinträchtigen.
GlideAjax
Die GlideAjax Klasse ermöglicht die Ausführung von serverseitigem Code vom Client. GlideAjax Aufrufe übergeben Parameter an die Skripteinbindungen und ermöglicht mithilfe von Benennungskonventionen die Verwendung dieser Parameter.
- Initialisieren GlideAjax Mit dem Namen der Skripteinbindung, die Sie verwenden möchten.
- Beim Erstellen der Skripteinbindung müssen Sie festlegen, dass das Namensfeld genau mit dem Klassennamen identisch ist.
- Beim Erstellen der Skripteinbindung müssen Sie auswählen Vom Client aufrufbar Kontrollkästchen.
- Geben Sie den Parameter an sysparm_name. GlideAjax Verwendet sysparm_nameUm zu finden, welche Funktion verwendet werden soll.
- Zusätzliche Parameter können übergeben werden, alle müssen mit beginnen sysparm_. Verwenden Sie vordefinierte Parameternamen nicht:
- sysparm_name
- sysparm_function
- sysparm_value
- sysparm_type
- Code wird dann mit ausgeführt GetXML() Oder GetXMLWait() Funktionen.
Weitere Informationen finden Sie unter GlideAjax API.
Beispiele für asynchronen GlideAjax
Es gibt zwei Teile für den asynchronen GlideAjax Skript: Clientseitiger und serverseitiger Code.
Hallo Welt: Gibt einen Wert vom Server zurück
Client-Seite
Dieser Code wird auf dem Client (dem Webbrowser) ausgeführt. Erstellen Sie ein Clientskript Wie normal. Dadurch werden die Parameter an den Server gesendet, der dann die Verarbeitung durchführt. Damit der Client nicht auf das Ergebnis wartet, wird eine Rückruffunktion verwendet, um das Ergebnis zurückzugeben, das an übergeben wird GetXML() Funktion. (In diesem Fall wird sie aufgerufen HelloWorldParse .)
var ga = new GlideAjax('HelloWorld');
ga.addParam('sysparm_name', 'helloWorld');
ga.addParam('sysparm_user_name', "Bob");
ga.getXML(HelloWorldParse);
function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer); }Serverseite
HelloWorld .- Die sys_script_include Code muss erweitern AbstractAjaxProcessor Klasse und vom Client aufrufbar sein.
- Funktionsnamen, die mit „_“ beginnen, werden als privat betrachtet und können vom Client nicht aufgerufen werden.
- Vermeiden Sie das Überschreiben von Methoden von AbstractAjaxProcessor , Einschließlich
Initialisieren. Es ist zwar möglich, Methoden Ihres Superklassenobjekts aufzurufen, die Sie überschrieben haben, dies ist jedoch kompliziert und am besten vermieden.
var HelloWorld = Class.create();
HelloWorld.prototype = Object.extendsObject(AbstractAjaxProcessor, {
helloWorld:function() { return "Hello " + this.getParameter('sysparm_user_name') + "!"; } ,
_privateFunction: function() { // this function is not client callable
}
});Dies führt zu einem Warnungsfeld mit der Aufschrift „Hallo Bob!“. Wenn Sie das Formular aufrufen.Mehrere Werte werden zurückgegeben
Da die Antwort ein XML-Dokument ist, sind wir nicht darauf beschränkt, ein einzelnes zurückzugeben Antwort Wert. Hier ist ein komplexeres Beispiel, das mehrere XML-Knoten und -Attribute zurückgibt.
Skripteinbindung des AJAX-Prozessors
/*
* MyFavoritesAjax script include Description - sample AJAX processor returning multiple value pairs
*/
var MyFavoritesAjax = Class.create();
MyFavoritesAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
/*
* method available to client scripts call using:
* var gajax = new GlideAjax("MyFavoritesAjax");
* gajax.addParam("sysparm_name","getFavorites");
*/
getFavorites: function() { // build new response xml element for result
var result = this.newItem("result");
result.setAttribute("message","returning all favorites");
//add some favorite nodes with name and value attributes
this._addFavorite("color","blue");
this._addFavorite("beer","lager");
this._addFavorite("pet","dog");
},
// all items are returned to the client through the inherited methods of AbstractAjaxProcessor
_addFavorite: function(name, value) {
var favs = this.newItem("favorite");
favs.setAttribute("name",name);
favs.setAttribute("value",value); },
type:"MyFavoritesAjax"
});
Client-Skript
// new GlideAjax object referencing name of AJAX script include
var ga = new GlideAjax("MyFavoritesAjax");
// add name parameter to define which function we want to call
// method name in script include will be getFavorites
ga.addParam("sysparm_name","getFavorites");
// submit request to server, call ajaxResponse function with server response
ga.getXML(ajaxResponse);
function ajaxResponse(serverResponse) {
// get result element and attributes
var result = serverResponse.responseXML.getElementsByTagName("result");
var message = result[0].getAttribute("message");
//check for message attribute and alert user
if(message) alert(message);
//build output to display on client for testing
var output = "";
// get favorite elements
var favorites = serverResponse.responseXML.getElementsByTagName("favorite");
for(var i = 0; i < favorites.length; i ++) {
var name = favorites[i].getAttribute("name");
var value = favorites[i].getAttribute("value");
output += name + " = " + value + "\n "; }
alert(output); }
XML-Antwort
<xml sysparm_max= "15" sysparm_name="getFavorites" sysparm_processor="MyFavoritesAjax">
<result message = "returning all favorites"></result>
<favorite name = "color" value = "blue"></favorite>
<favorite name = "beer" value = "lager"></favorite>
<favorite name = "pet" value = "dog"></favorite>
</xml>
Beispiele für synchrone GlideAjax
Verwenden Sie synchron, wenn Ihr Skript ohne nicht fortgesetzt werden kann GlideAjax Antwort. Dadurch wird die Sitzung angehalten, bis die Antwort empfangen wurde.
Wenn Ihr Anwendungsfall erfordert, dass bis zum keine weitere Verarbeitung erfolgen kann GlideAjax Antwort wurde empfangen, Sie können verwenden GetXMLWait() . Da dadurch Ihr Code jedoch verlangsamt und die Anwendersitzung gesperrt wird, bis die Antwort empfangen wird, wird im Allgemeinen empfohlen, dass Sie verwenden GetXML() Mit einer Rückruffunktion.
Die GetXMLWait() Methode ist in bereichsbezogenen Anwendungen nicht verfügbar.
Dieser Code führt zu einer clientseitigen Warnung, die angezeigt wird Der Server Sagt Hallo Bob! .
var ga = new GlideAjax('HelloWorld') ;
ga.addParam('sysparm_name','helloWorld');
ga.addParam('sysparm_user_name',"Bob");
ga.getXMLWait();
alert(ga.getAnswer());var HelloWorld = Class.create();
HelloWorld.prototype = Object.extendsObject(AbstractAjaxProcessor, {
helloWorld: function()
{ return "The Server Says Hello " + this.getParameter('sysparm_user_name') + "!"; } } );AJAXClientHelper
Stellt Hilfsfunktionen für Ajax-Clients bereit, um einen Wert von einem Ajax-Client abzurufen.
Verwendungsort
Verwenden Sie diese Skripteinbindung überall dort, wo Sie einen Wert von einem Ajax-Client abrufen möchten.
Methodenzusammenfassung
| Methodenzusammenfassung | Beschreibung |
|---|---|
| GetDisplay() | Ruft den Anzeigewert aus der Auswahlliste ab. |
Methodendetail
| API-Methode | Beschreibung | Eingabeparameter | Ausgabe gibt zurück |
|---|---|---|---|
| GetDisplay() | Ruft den Anzeigewert aus der Auswahlliste ab. | Keine | Der Anzeigewert. |
Wellung
// getDisplay
(function(table, sysId) {
var ga = new GlideAjax('AjaxClientHelper');
ga.addParam("sysparm_name", "getDisplay");
ga.addParam('sysparm_table', 'incident');
ga.addParam('sysparm_value', "0598b22b877313003c1c8467a7cb0b71");
ga.getXMLWait();
return ga.getAnswer();
}("incident", "0598b22b877313003c1c8467a7cb0b71")); // Returns 'INC0010001'