AJAX

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 4 Minuten Lesedauer
  • 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.

    Hinweis:
    Diese Funktionalität erfordert JavaScript-Kenntnisse.
    Wird Verwendet GlideAjax :
    • 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 .)

    Die GetXMLWait() Die Funktion erfordert keine separate Rückruffunktion, aber dadurch wird der Client blockiert. Wenn die Client-Server-Kommunikation lange dauert (z. B. in langsamen Netzwerken), scheint die Anwendung nicht zu reagieren und langsam zu sein. Ein Beispiel für GetXMLWait() Befindet sich im folgenden Abschnitt.
    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

    Der serverseitige Code für die obige Funktion. Erstellen Sie keine Business-Regel, sondern navigieren Sie stattdessen zu Systemdefinition > Skripteinbindung Und erstellen Sie ein neues Skript. Fügen Sie den folgenden Code ein.
    Hinweis:
    Sie müssen den Namen der Skripteinbindung auf festlegen 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.

    Hinweis:
    Nicht verwenden AJAXAuswertungssynchron .

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

    Der Client-Code.
    var ga = new GlideAjax('HelloWorld') ;
    ga.addParam('sysparm_name','helloWorld');
    ga.addParam('sysparm_user_name',"Bob");
    ga.getXMLWait(); 
    alert(ga.getAnswer());
    Der serverseitige Skripteinbindungscode.
    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'