Search This Blog

Tuesday, August 12, 2008

using ajax in an elegant way without dojo

//------------------------------------Library--------------------------------

//------takes a formid and returns elements inside in a format to -----------
//----------------send by ajax with post(not get)----

function getForm(formid)
{
var getstr='';
var obj=document.getElementById(formid)? document.getElementById(formid) : document.forms[formid];
var inputobjs=null;
inputobjs=obj.getElementsByTagName("INPUT");
for (i=0; i
{
var inpobj=inputobjs[i];
if (inpobj.tagName == "INPUT")
{
if (inpobj.type == "text")
{
getstr +="&" + inpobj.name + "=" + inpobj.value;
}
if (inpobj.type == "hidden")
{
getstr +="&" + inpobj.name + "=" + inpobj.value;
}
if (inpobj.type == "password")
{
getstr +="&" + inpobj.name + "=" + inpobj.value;
}
if (inpobj.type == "checkbox")
{
if (inpobj.checked)
{
getstr +="&" + inpobj.name + "=" + inpobj.value;
}
}
if (inpobj.type == "radio")
{
if (inpobj.checked)
{
getstr +="&" + inpobj.name + "=" + inpobj.value;
}

}
}
}
var selobjs=null;
selobjs=obj.getElementsByTagName("SELECT");
for (i=0; i
{
var sel = selobjs[i];
getstr +="&" + sel.name + "=" + sel.options[sel.selectedIndex].value;
}

var txtAreaobjs=null;
txtAreaobjs=obj.getElementsByTagName("TEXTAREA");
for (i=0; i
{
var txtAr = txtAreaobjs[i];
getstr +="&" + txtAr.name + "=" + ((txtAr.value=="")?txtAr.innerHTML:txtAr.value);
}


return getstr;
}


//---------------------use to send data(postdata) using ajax--------------------

function fetchData(dataSource, postData, callback)
{
httpRequest = false;
if (window.XMLHttpRequest)
{
httpRequest = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
try
{
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e)
{
alert("fetchData, e: " + e);
}
}
}
else
{
return false;
}
httpRequest.onreadystatechange = callback;
httpRequest.open("POST", dataSource, true);
httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
if (postData == null)
{
httpRequest.send(null);
} else
{
var params = postData;
httpRequest.send(params);
}
}

//------------------------------------Usage--------------------------------
function submitAccessMaster(savetype)
{
//getform method retrieves all the values inside a form
fetchData(ProjAccessPath+'/hercules.do?do=accessmasterSet', getForm('iacmform'), updateAccessMaster);
}

function updateAccessMaster()
{ dojo.byId('iacserror').innerHTML="Saving";
if (httpRequest.readyState == 4)
{
if (httpRequest.status == 200)
{
var data=httpRequest.responseXML;
var acmins=data.getElementsByTagName("acmins")[0];
var insstatus=setAcsJSLine(acmins,"status");
var message=setAcsJSLine(acmins,"message");
var savetype=setAcsJSLine(acmins,"savetype");
if (insstatus=="success")
{
var acno=setAcsJSLineSerRslt(acmins,"acno");
var acname=setAcsJSLineSerRslt(acmins,"acname");
var acreorder=setAcsJSLineSerRslt(acmins,"reorder");
if(savetype=="Add")
{
var tbl=dojo.byId('searchresulttable');
var trow = tbl.insertRow(1);
trow.id='tr'+acno;
trow.onclick = function () {
klik(acno);
getAccessoryMaster(acno);
}
var tdno = trow.insertCell(0);
var tdname = trow.insertCell(1);
var tdreorder = trow.insertCell(2);
applytdstyle(tdno);
applytdstyle(tdname);
applytdstyle(tdreorder);
tdno.innerHTML=acno;
tdname.innerHTML=acname;
tdreorder.innerHTML=acreorder;
}
else if(savetype=="Edit")
{
var row = dojo.byId('tr'+acno);
var tdno = row.cells[0];
var tdname = row.cells[1];
var tdreorder = row.cells[2];
applytdstyle(tdno);
applytdstyle(tdname);
applytdstyle(tdreorder);
tdno.innerHTML=acno;
tdname.innerHTML=acname;
tdreorder.innerHTML=acreorder;
}

dojo.byId('accessnoTop').value=acno;
klik(acno);
}
else
{
if(savetype=="Add")
{
addnewStyle();
}
else if(savetype=="Edit")
{
doEditStyle();
}
}
dojo.byId('iacserror').innerHTML=message;
}
else
{
alert("Error retreiving data.");
}
}
}

//------------------------------------Library--------------------------------
function setFormData(formid,fmCntsName,fmCntsXml,XmlParent)
{
if(fmCntsName.length!=fmCntsXml.length)
{
alert("Mismatch in Names and XmlValues to set..");
return;
}

for( i=0; i < fmCntsName.length;i++)
{
document.getElementById(formid).elements[fmCntsName[i]].value=
setAcsJSLine(XmlParent,fmCntsXml[i]);
}
}
//---------------------------------------Usage---------------------------------

setFormData('iacmform',['accessdesc','uom','category','accesssalevalue','reorderlevel'],
['desc','uom','cat','sale','re'],ac);