<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script type="text/javascript">
<!--
function HttpClient() { } // HTTPCLIENT CLASS
HttpClient.prototype = {
// type GET,POST passed to open
requestType:'GET',
// when set to true, async calls are made
isAsync:true,
// where an XMLHttpRequest instance is stored
xmlhttp:false,
// what is called when a successful async call is made
callback:false,
// what is called when send is called on XMLHttpRequest
// set your own function to onSend to have a custom loading
// effect
onSend:function()
{
//document.getElementById('HttpClientStatus').style.display = 'block';
},
// what is called when readyState 4 is reached, this is
// called before your callback
onload:function()
{
//document.getElementById('HttpClientStatus').style.display = 'none';
},
// what is called when an http error happens
onError:function(error)
{
alert(error);
},
// method to initialize an xmlhttpclient
init:function()
{
try
{
// Mozilla / Safari
this.xmlhttp = new XMLHttpRequest();
}
catch (e)
{
// IE
var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0',
'MSXML2.XMLHTTP.4.0',
'MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP');
var success = false;
for (var i=0;i < XMLHTTP_IDS.length && !success; i++)
{
try
{
this.xmlhttp = new ActiveXObject
(XMLHTTP_IDS[i]);
success = true;
}
catch (e)
{}
}
if (!success)
{
this.onError('Unable to create XMLHttpRequest.');
}
}
},
// method to make a page request
// @param string url The page to make the request to
// @param string payload What you're sending if this is a POST
// request
makeRequest: function(url,payload)
{
if (!this.xmlhttp)
{
this.init();
}
this.xmlhttp.open(this.requestType,url,this.isAsync);
// set onreadystatechange here since it will be reset after a
//completed call in Mozilla
var self = this;
this.xmlhttp.onreadystatechange = function()
{
self._readyStateChangeCallback();
}
if (this.requestType == "POST")
{
this.xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
this.xmlhttp.setRequestHeader("Content-length", payload.length);
this.xmlhttp.setRequestHeader("Connection", "close");
}
this.xmlhttp.send(payload);
if (!this.isAsync)
{
return this.xmlhttp.responseXML;
}
},
// internal method used to handle ready state changes
_readyStateChangeCallback:function()
{
switch(this.xmlhttp.readyState)
{
case 2:
this.onSend();
break;
case 4:
this.onload();
if (this.xmlhttp.status == 200)
{
this.callback(this.xmlhttp.responseXML);
}
else
{
this.onError('HTTP Error Making Request: ' + '[' + this.xmlhttp.status + ']' + ' ' + this.xmlhttp.statusText);
}
break;
}
}
}
var client = new HttpClient();// create an instance of the object
client.isAsync = false;// I personally set this to false to hold execution until the request is finished
var company_email = null;// declare the global
var http_status = null; // global I use to keep track of status
function get_global_email()
{
client.requestType = "GET";
// function to handle completed calls
client.callback = function(XMLresult)
{
if (XMLresult.getElementsByTagName("status"))// did XML page create a 'status' element?
{
http_status = XMLresult.getElementsByTagName("status")[0].childNodes[0].nodeValue;
}else{// if no 'status' element was returned, set global http_status to FAILED NO STATUS
http_status = "FAILED NO STATUS";
return;
}
if (http_status == "SUCCESS") {// if we got a SUCCESS in 'status' element, put row data in global variable
// use of split("^") gives us an array of "name,email" pairs.
company_email = XMLresult.getElementsByTagName("email")[0].childNodes[0].nodeValue.split("^");
}
}
client.makeRequest('test.ajax.php?sid='+Math.random(),null);
return;
}
function build_contact_list()
{
http_status=null; // make sure it's clear beforehand
get_global_email(); // call our ajax function to retrieve contact info from database
// handle incomplete requests
if (http_status != "SUCCESS"){alert("something went wrong:"+http_status);return;}
var cm = document.getElementById("contact_menu"); // get the select element
// remove all options from this select element
while ( cm.options.length )
{
cm.remove(cm.options[0]);
}
for ( var i = 0; i < company_email.length; i++ )
{
var newOpt=document.createElement('option');
// now seperate the name from the email address
var tmp = company_email[i].split(",");
newOpt.text=tmp[0];// set the persons name as the text of the option element
try
{
cm.add(newOpt,null); // standards compliant
}
catch(ex)
{
cm.add(newOpt); // IE only
}
cm.options[i].value = tmp[1];// set the email address as the value of the option element
cm.selectedIndex = 0;
}
}
-->
</script>
</head>
<body>
<div>
<select id="contact_menu">
<option></option><!-- dummy option so you don't throw validation errors -->
</select>
<br>
<button type="button" onClick="build_contact_list()">Build The Menu</button>
</div>
</body>
</html>