Ajax
WXT may utilize some javascriptcoding and ajax functionality for webpages. If you use the Processing Instructions popup ,request or some features of import-text, you may want to include the following javascript in your code: http://www.ia.hiof.no/~borres/common/jscripts/std.js. It may be a good idea to include it in your template-pages.
You may of course write your own. It should go something like this:
/*
Minialistic library used on my websites
- a simple popup,
simplepopup(url,wname,wstyle)
- general AJAX with text request/post,
doRequest(theURL,params,targetId,waiter)
doGetRequest(theURL,targetId,waiter)
- expand/unexpand text request/get
expand(address,targetNode)
unexpand(address,targetNode)
All functions may be used directly, but are also supported by WXT
B.Stenseth 2007.
*/
// ------------ pop ------------------
//popup
function simplepopup(theURL,wname,wstyle)
{
if(wstyle=='*')
wstyle='scrollbars=yes,resizable=yes,width=600,height=600,status=no';
try{
newwindow=window.open(theURL, wname, wstyle);
if (window.focus) {newwindow.focus()}
}
catch(E){
// ??
alert('If you have blocked pop-ups\n Press Ctrl-Alt when clicking');
}
}
//eofpopup
//------------- std ajax ------------------
function establishRequest()
{
var theRequest=null;
if (window.XMLHttpRequest)
theRequest = new XMLHttpRequest();
else if (window.ActiveXObject)
{
try { theRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
try {theRequest= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {theRequest=null;}
}
}
else
theRequest=null;
return theRequest;
}
function postRequest(theRequest,params,targetId,theUrl)
{
theRequest.onreadystatechange =
function( ) {
processRequestChange(theRequest,targetId);
};
theRequest.open("POST", theUrl,true);
theRequest.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
theRequest.setRequestHeader("Content-length", params.length);
theRequest.setRequestHeader("Connection", "close");
theRequest.send(params);
}
function processRequestChange( aRequest,aTarget )
{
if (aRequest.readyState == 4) {
if ((aRequest.status == 200) || (aRequest.status == 304))
document.getElementById(aTarget).innerHTML=
aRequest.responseText;
else
{
alert("Problems accessing data:\n" + aRequest.statusText);
document.getElementById(aTarget).innerHTML=
aRequest.statusText;
}
}
}
//------------------------ general ajax ------------------------
function doRequest(theURL,params,targetId,waiter)
{
var myRequest=establishRequest();
if (myRequest)
{
if(waiter)
{
if(waiter == 'std')
waiter='http://www.ia.hiof.no/~borres/common/gfx/waiter.gif';
try{
document.getElementById(targetId).innerHTML=
'<img src="'+waiter+'" alt=" "/>';}
catch(E){}
}
postRequest(myRequest,params,targetId,theURL);
}
else
{
alert('Browser will not do a request');
}
}
function doGetRequest(theURL,targetId,waiter)
{
var myRequest=establishRequest();
if (myRequest)
{
if(waiter)
{
if(waiter == 'std')
waiter='http://www.ia.hiof.no/~borres/common/gfx/waiter.gif';
try{
document.getElementById(targetId).innerHTML=
'<img src="'+waiter+'" alt=" "/>';}
catch(E){}
}
myRequest.onreadystatechange =
function( ) {
processRequestChange(myRequest,targetId);
};
myRequest.open("GET", theURL, true);
myRequest.send(null);
}
else
{
alert('Browser will not do a request');
}
}
// ------------------------ expansion ----------------------
//expand
// dependent of style-class: onoff for visible effect
function expand(address,targetNode){
var myRequest=establishRequest();
if(myRequest)
{
myRequest.onreadystatechange = function( ) {
useExpansion(myRequest,address,targetNode);
};
myRequest.open("GET", address, true);
myRequest.send(null);
}
}
function useExpansion(theRequest,address,targetNode)
{
// if the request is complete and successfull
if (theRequest.readyState == 4) {
if ((theRequest.status == 200) || (theRequest.status == 304))
{
var T=theRequest.responseText;
var pos1=T.indexOf('<pre');
var pos2=T.lastIndexOf('</pre');
if ((pos1 !=-1) && (pos2 > pos1))
T=T.substring(pos1,pos2);
T='<span class="onoff" '+
'onclick="unexpand(\''+address+'\',this.parentNode)">-</span>'+T;
targetNode.innerHTML=T;
}
else
{
alert("Problem med tilgang til data:\n" + theRequest.statusText);
targetNode.innerHTML=theRequest.statusText;
}
}
}
function unexpand(address,targetNode){
T='<span class="onoff" onclick="expand(\''
+address+'\',this.parentNode);">+</span>';
targetNode.innerHTML=T;
}
//eofexpand