rendered paste body<html>
<head>
<script src="request.js"></script>
<script>
function handleOnChange(dd1)
{
var idx = dd1.selectedIndex;
var val = dd1[idx].text;
var par = document.forms["frmSelect"];
var parelmts = par.elements;
var prezsel = parelmts["prez"];
var country = val;
if (country != "Select country")
{
Http.get({
url: "./" + country + ".txt",
callback: fillPrez,
cache: Http.Cache.Get
}, [prezsel]);
}
}
function fillPrez(xmlreply, prezelmt)
{
if (xmlreply.status == Http.Status.OK)
{
var prezresponse = xmlreply.responseText;
var prezar = prezresponse.split("|");
prezelmt.length = 1;
prezelmt.length = prezar.length;
for (o=1; o < prezar.length; o++)
{
prezelmt[o].text = prezar[o];
}
}
else
{
alert("Cannot handle the AJAX call.");
}
}
</script>
</head>
<body>
<form name="frmSelect">
<p>
<select name="country" onChange="handleOnChange(this);">
<option>Select country</option>
<option>France</option>
<option>Germany</option>
<option>Spain</option>
</select>
</p><p>
<select name="prez">
<option>Select head of government</option>
</select>
</p>
</form>
</body>
</html>
******* request.js**********
/*
XmlHttpRequest Wrapper
Version 1.2.2
29 Jul 2005
adamv.com/dev/
*/
var Http = {
ReadyState: {
Uninitialized: 0,
Loading: 1,
Loaded:2,
Interactive:3,
Complete: 4
},
Status: {
OK: 200,
Created: 201,
Accepted: 202,
NoContent: 204,
BadRequest: 400,
Forbidden: 403,
NotFound: 404,
Gone: 410,
ServerError: 500
},
Cache: {
Get: 1,
GetCache: 2,
GetNoCache: 3,
FromCache: 4
},
Method: {Get: "GET", Post: "POST", Put: "PUT", Delete: "DELETE"},
enabled: false,
logging: false,
_get: null, // Reference to the XmlHttpRequest object
_cache: new Object(),
Init: function(){
Http._get = Http._getXmlHttp()
Http.enabled = (Http._get != null)
Http.logging = (window.Logging != null);
},
_getXmlHttp: function(){
/*@cc_on @*//*@if (@_jscript_version >= 5)
try { return new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) {}
@end @*/
try { return new XMLHttpRequest();}
catch (e) {}
return null;
},
/*
Params:
url: The URL to request. Required.
cache: Cache control. Defaults to Cache.Get.
callback: onreadystatechange function, called when request is completed. Optional.
method: HTTP method. Defaults to Method.Get.
*/
get: function(params, callback_args){
if (!Http.enabled) throw "Http: XmlHttpRequest not available.";
var url = params.url;
if (!url) throw "Http: A URL must be specified";
var cache = params.cache || Http.Cache.Get;
var method = params.method || Http.Method.Get;
var callback = params.callback;
if ((cache == Http.Cache.FromCache) || (cache == Http.Cache.GetCache))
{
var in_cache = Http.from_cache(url, callback, callback_args)
if (Http.logging){
Logging.log(["Http: URL in cache: " + in_cache]);
}
if (in_cache || (cache == Http.Cache.FromCache)) return in_cache;
}
if (cache == Http.Cache.GetNoCache)
{
var sep = (-1 < url.indexOf("?")) ? "&" : "?"
url = url + sep + "__=" + encodeURIComponent((new Date()).getTime());
}
// Only one request at a time, please
if ((Http._get.readyState != Http.ReadyState.Uninitialized) &&
(Http._get.readyState != Http.ReadyState.Complete)){
this._get.abort();
if (Http.logging){
Logging.log(["Http: Aborted request in progress."]);
}
}
Http._get.open(method, url, true);
Http._get.onreadystatechange = function() {
if (Http._get.readyState != Http.ReadyState.Complete) return;
if (Http.logging){
Logging.log(["Http: Returned, status: " + Http._get.status]);
}
if ((cache == Http.Cache.GetCache) && (Http._get.status == Http.Status.OK)){
Http._cache[url] = Http._get.responseText;
}
if (callback_args == null) callback_args = new Array();
var cb_params = new Array();
cb_params.push(Http._get);
for(var i=0;i<callback_args.length;i++)
cb_params.push(callback_args[i]);
callback.apply(null, cb_params);
}
if(Http.logging){
Logging.log(["Http: Started\n\tURL: " + url + "\n\tMethod: " + method + "; Cache: " + Hash.keyName(Http.Cache,cache)])
}
Http._get.send(params.body || null);
},
from_cache: function(url, callback, callback_args){
var result = Http._cache[url];
if (result != null) {
var response = new Http.CachedResponse(result)
var cb_params = new Array();
cb_params.push(response);
for(var i=0;i<callback_args.length;i++)
cb_params.push(callback_args[i]);
callback.apply(null, cb_params);
return true
}
else
return false
},
clear_cache: function(){
Http._cache = new Object();
},
is_cached: function(url){
return Http._cache[url]!=null;
},
CachedResponse: function(response) {
this.readyState = Http.ReadyState.Complete
this.status = Http.Status.OK
this.responseText = response
}
}
Http.Init()
function json_response(response){
var js = response.responseText;
try{
return eval(js);
} catch(e){
if (Http.logging){
Logging.logError(["json_response: " + e]);
}
else{
alert("Error: " + e + "\n" + js);
}
return null;
}
}
function getResponseProps(response, header){
try {
var s = response.getResponseHeader(header || 'X-Ajax-Props');
if (s==null || s=="")
return new Object()
else
return eval("o="+s)
} catch (e) { return new Object() }
}