H
HugeBob
Hi All,
I'm having a problem with a web app I'm writing. I have a form for
which I'm going to validate one of the fields. I use AJAX to retrieve
XML containing a list of valid entries. My app works under IE, oddly
enough. But, under Firefox, it seems that the
XMLHttpRequest.onreadystatechange method is not being called. The
code follows. I'm using synchronous mode because I'm thinking that I
want that global variable g_groupListXML to contain
xmlHttp.responseText before ajaxGetGroupUserListXML( ) returns. Am I
right on this point?
function getXMLHTTPRequestObject( )
{
var xmlHttp = null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
}
}
}
return xmlHttp;
}
var g_groupListXML = null;
function ajaxGetGroupUserListXML(url)
{
var xmlHttp = null;
xmlHttp = getXMLHTTPRequestObject( );
xmlHttp.onreadystatechange = function ()
{
if
(xmlHttp.readyState == 4)
{
alert("onreadystatechange called...");
g_groupListXML = xmlHttp.responseText;
}
}
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
}
function getGroupListXML(form)
{
var retval = false;
var xmlDoc = null;
var doc = null;
ajaxGetGroupUserListXML('XMLProducingScript.cfm');
// Parse retrieved XML
if (window.ActiveXObject)
{
doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = "false";
doc.loadXML(g_groupListXML);
}
else
{
var parser = new DOMParser( );
doc = parser.parseFromString(g_groupListXML, "text/xml");
}
xmlDoc = doc.documentElement;
form.fieldx.value = trim(form.fieldx.value);
for (var i = 0; i < xmlDoc.childNodes.length; i++)
{
if (xmlDoc.childNodes.childNodes[0].nodeValue.toLower( ) ==
form.group_name.value.toLowerCase())
{
alert('String already used');
retval = true;
break;
}
}
return retval;
}
I'm having a problem with a web app I'm writing. I have a form for
which I'm going to validate one of the fields. I use AJAX to retrieve
XML containing a list of valid entries. My app works under IE, oddly
enough. But, under Firefox, it seems that the
XMLHttpRequest.onreadystatechange method is not being called. The
code follows. I'm using synchronous mode because I'm thinking that I
want that global variable g_groupListXML to contain
xmlHttp.responseText before ajaxGetGroupUserListXML( ) returns. Am I
right on this point?
function getXMLHTTPRequestObject( )
{
var xmlHttp = null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
}
}
}
return xmlHttp;
}
var g_groupListXML = null;
function ajaxGetGroupUserListXML(url)
{
var xmlHttp = null;
xmlHttp = getXMLHTTPRequestObject( );
xmlHttp.onreadystatechange = function ()
{
if
(xmlHttp.readyState == 4)
{
alert("onreadystatechange called...");
g_groupListXML = xmlHttp.responseText;
}
}
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
}
function getGroupListXML(form)
{
var retval = false;
var xmlDoc = null;
var doc = null;
ajaxGetGroupUserListXML('XMLProducingScript.cfm');
// Parse retrieved XML
if (window.ActiveXObject)
{
doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = "false";
doc.loadXML(g_groupListXML);
}
else
{
var parser = new DOMParser( );
doc = parser.parseFromString(g_groupListXML, "text/xml");
}
xmlDoc = doc.documentElement;
form.fieldx.value = trim(form.fieldx.value);
for (var i = 0; i < xmlDoc.childNodes.length; i++)
{
if (xmlDoc.childNodes.childNodes[0].nodeValue.toLower( ) ==
form.group_name.value.toLowerCase())
{
alert('String already used');
retval = true;
break;
}
}
return retval;
}