PHP Classes

File: javascript.js

Recommend this page to a friend!
  Classes of Kristo Vaher   Smart AJAX Controller   javascript.js   Download  
File: javascript.js
Role: Auxiliary data
Content type: text/plain
Description: JavaScript Front-End controller, utilizing custom uiAction() function.
Class: Smart AJAX Controller
Generate AJAX request responses in JSON format
Author: By
Last change:
Date: 14 years ago
Size: 3,583 bytes
 

Contents

Class file image Download
//Front-end javascript controller //LGPL - http://www.gnu.org/licenses/lgpl-3.0.txt //Kristo Vaher - kristo@waher.net //Backend engine var ajaxEngine='ajax.php'; //Used for convenient internal variables var system=new Object(); //If you ever set systemLock to true, then this prevents user interface actions from taking place system.systemLock=false; $(document).ready(function(){ //You can bind events and whatnot here as you would in any other case. //This here is a placeholder for your convenience. }); //This is front-end input controller. Data can be whatever you want, //you can use it in different context depending on action. function uiAction(action,data){ //input is an object used to be sent to AJAX backend. var input=new Object(); if(system.systemLock==false){ switch(action){ //This shows how to use simple uiAction without using AJAX case 'alertString': alert('Your string: '+data); break; //This is an example function, it takes a value and has PHP backend lowercase it before alerting it //to the user. case 'alertLowercaseString': //You do not have to use input object here, but you do need to provide an array or another object //to be sent to executeAjaxAction(); input['string']=data; executeAjaxAction(action,input); break; default: alert('UI ERROR: This action ['+action+'] does not exist in user interface!'); } } } //This should not be modified, it is standardized function for sending data to backend //and retreiving the JSON string before forwarding it to frontend callback function executeAjaxAction(action, rawdata){ //data is an array or an object serialized for use in a URL data=$.param(rawdata); //Lock is used to prevent action spamming //If you don't want to lock AJAX actions, then comment this out or at least display an error if(system['lock_'+action]!=1){ system['lock_'+action]=1; $.ajax({ type: 'POST', url: ajaxEngine, dataType: 'json', cache: false, async: true, data: ({action : action, data : data}), success: function(json){ //If successful the JSON returned from backend is forwarded to be parsed by frontend actions parseAjaxReturn(json); system['lock_'+action]=0; }, error: function(obj,msg,detailedmsg){ //In case there was any unexpected error in the backend (PHP errors and whatnot), alert everything alert('ENGINE ERROR: '+msg+' ('+detailedmsg+')'); system['lock_'+action]=0; } }); } else { //You can comment this alert out alert('ENGINE ERROR: This action is already in progress'); } } //This function takes the AJAX returned JSON and executes actions depending on the type //You can call new user interface actions from here as well function parseAjaxReturn(json){ //If backend defines an error and a message for the error, alert this if(json['error']==1){ alert('ERROR: '+json['message']); } else { switch(json['action']){ //Example action for alert should backend decide to call for an alert case 'alert': alert(json['message']); break; //Simple refresh callback from backend case 'refresh': document.location.href=document.location.href; break; //Backend should always define action to be 'none' if no callback is defined case 'none': break; //In case no action was defined, alert an error default: alert('UI ERROR: Callback action ['+json['action']+'] does not exist in user interface!'); } } }