We will write some JavaScript to add a callback function to interpret the response from the server and call the successful or failed login functions: function genericBtnHandler(event){
try { // try block
var infoString = "Type = " + event.type + ",";
infoString += "Target = " + event.target + ",";
infoString += "Target.tagName = " + event.target.tagName + ",";
infoString += "Target.id = " + event.target.id + ".";
dump(infoString + "\n");
} // try block
catch (e) {
alert("genericBtnHandler exception: " + e);
}
}
function doLogin(event) {
try { // try
var theArgs = new Array;
theArgs[0] = new commandArg("un",document.getElementById("userName").value);
theArgs[1] = new commandArg("pd",document.getElementById("password").value);
doServerRequest("login",theArgs);
} // try
catch (e) { //
alert("doLogin exception: " + e);
}//
}
//
// Dynamically assign our event handler properties
// function initialize() {
try {
document.getElementById("B1").addEventListener("command",genericBtnHandler,true);
document.getElementById("B2").addEventListener("command",genericBtnHandler,true);
document.getElementById("B3").addEventListener("command",genericBtnHandler,true);
//
// Add a login script
document.getElementById("loginButton").addEventListener("command",doLogin,true);
}
catch (e) {
alert ("Exception: " + e);
}
}
function loginOK() {
var theParent = document.getElementById("contentArea");
while(theParent.childNodes.length
!= 0)
theParent.removeChild(theParent.childNodes[0]);
// Now re-create a welcome area
theParent.style.backgroundColor = "LightSeaGreen";
theParent.style.borderColor = "gray";
theParent.style.borderStyle = "ridge";
var leftSpacer = document.createElement("spacer");
leftSpacer.setAttribute("flex","1");
theParent.appendChild(leftSpacer);
var newDescription = document.createElement("description");
var newDescriptionText = document.createTextNode("Welcome!");
newDescription.appendChild(newDescriptionText);
theParent.appendChild(newDescription);
var rightSpacer = document.createElement("spacer");
rightSpacer.setAttribute("flex","1");
theParent.appendChild(rightSpacer);
}
function commandArg(argKey,argValue) {
this.key = argKey;
this.value = argValue;
}
function loginFail(){
document.getElementById("msgDescription").style.backgroundColor="red";
document.getElementById("msgDescription").style.color="white";
document.getElementById("msgDescription").childNodes[0].nodeValue =
"User not authenticated.";
document.getElementById("userName").value = "";
document.getElementById("password").value = "";
}
//
// CreateServerRequest
//
var theServerRequest;
//
// commandArgs is an array of arguments, each element
// is converted into a PHP GET URL field
function doServerRequest(commandString,commandArgs) {
theServerRequest = new XMLHttpRequest();
var theString ="http://localhost/ doCommand.php?"+"&command="+commandString+"&";
for (var i = 0; i < commandArgs.length; i++) { // build remaining parameters
theString += commandArgs[i].key + "=" + commandArgs[i].value ;
if (i != (commandArgs.length-1)) theString += "&";
} // build remaining parameters
theServerRequest.onreadystatechange = retrieveServerResponse;
theServerRequest.open("GET",theString,true);
theServerRequest.send(null);
}
function retrieveServerResponse() {
if (theServerRequest.readyState == 4) { // all done
// Check return code
if (theServerRequest.status == 200) { // request terminated OK
alert("Response is " + theServerRequest.responseText);
if (theServerRequest.responseText == "retcode=true") { // all OK
loginOK();
} // all OK
else loginFail();
} // request terminated OK
else { // something is wrong
alert("Response failed.");
} // something is wrong
} // all done
}