Per Stenebo
2012-02-23 21:31:06
2017-04-16 12:59:37

Ajax
Ta hjälp av ajax när du skapar appar i BendCMS!
Denna sidan förutsätter att du har kännedom om Ajax, annars har tex w3schools en utmärkt snabbkurs i PHP med Ajax.
Grundprocessen i Ajax skulle kunna beskrivas så här:
- En bit javaskript i ett element (tex en länk, knapp eller bild) anropar en javaskriptfunktion i sidans head-del.
- Javaskriptfunktionen skickar vidare anropet till en logikfil (skrivet i tex php) som behandlar datan.
- Logikfilen skickar tillbaka svaret till javaskriptfunktionen, antingen som en enkel sträng eller som XML.
- Javaskriptfunktionen skriver ut svaret på anvisad plats på sidan.
BendCMS är anpassat för AJAX-funktionalitet, en sida kan konfigureras för att enbart visa resultatet från logikfilen.
Tillämpa Ajax i BendCMS
Exempel på hur man tar hjälp av dom inbyggda funktionerna i BendCMS för att skapa funktionalitet med Ajax.
Exemplet kör alla anrop genom ~/controller.php (som alla andra sidor i BendCMS), det gör att en hel del variabler och kontroller redan är klara när man kommer fram till den sidunika koden. Det sparar en hel del tid och arbete.
- Skapa en logikfil som skall processa ajax-anropet, placeras under mappen ~/pageLogic.
- Skapa en fil med javaskript som (senare) innehåller ajax-funktionen, placeras under ~/javascript med ändelsen .js
Exempel: bendcms/javascript/getNewMenuorder.js - Skapa en ny sida, observera följande inställningar i konfigurationen:
- Logikfil: Välj den logikfil du skapade i punkt 1.
- Javaskript: Välj den javaskriptfil som du skapade i punkt 2.
- Sidmall: Välj mallen requestPageOnly.php
Detta gör att inget annat än den sträng som man vill skicka tillbaka till ajax-funktionen skrivs ut. - Behörighet: Ange samma behörighetsnivåer som den sida som anropar denna sidan.
- Sidstack: Ta bort alla id utom 0. Det är inte nödvändigt men det maximerar prestandan.
- Meny: Välj None (ingen meny). Denna sidan skall ju bara anropas via ajax.
- Redigering: Ingen redigering av innehåll.
- Spara sidan, notera adressen, den skall anges som mål i ajax-funktionens xmlhttp.open()-sats.
- Skapa javaskript som skall anropa ajax-funktionen.
- Gör klart ajax-funktionen i den inkluderade .js-filen.
- Testa.
Om javaskriptfunktionen skall få värden från php-variabler kan den normalt inte inkluderas som en separat .js-fil.
Då kan man skriva funktionen i en .php-fil placerad i mappen ~/head som inkluderas inom head-taggen.
Vilka typer av filer som skall köras genom php-motorn kan konfigureras i php.ini eller ibland i webbhotellets kontrollpanel.
När datan har processats av logikfilen skall resultatet skrivas ut med en eller flera echo-satser för återsändning till ajaxfunktionen.
Denna utskrift bör placeras i innehållsfilen (i mappen ~/pageContent) om man strikt skall följa tankarna i BendCMS, men ibland kan det vara enklare att göra det i slutet av logikfilen och lämna innehållsfilen tom.