By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,131 Members | 1,494 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,131 IT Pros & Developers. It's quick & easy.

Getting error object does not support this property or method

P: 1
I am using Ajax with struts in web application.

from jsp i am calling a function of ajax.js onclick of a button.
code of that call function which calling from jsp given as below:-
onclick="retrieveURL('/application/home_page.do?processAction=ItinerarySearch','AfoHo meForm')"

after clicking on button i am getting following error:-

object does not support this property or method
at statement (Which i have made it bold in js file)

[i]content=newTextElements.substring(startContentPos)

if any one has solution plz help me.
thanks in advance..

contain of Ajax.js file

//global variables
var req;
var which;


/**
* Get the contents of the URL via an Ajax call
* url - to get content from (e.g. /struts-ajax/sampleajax.do?ask=COMMAND_NAME_1)
* nodeToOverWrite - when callback is made
* nameOfFormToPost - which form values will be posted up to the server as part
* of the request (can be null)
*/
function retrieveURL(url,nameOfFormToPost) {

//get the (form based) params to push up as part of the get request
url=url+getFormAsString(nameOfFormToPost);

//Do the Ajax call
if (window.XMLHttpRequest) { // Non-IE browsers
req = new XMLHttpRequest();
req.onreadystatechange = processStateChange;
try {
req.open("GET", url, true); //was get
} catch (e) {
alert("Problem Communicating with Server\n"+e);
}
req.send(null);
} else if (window.ActiveXObject) { // IE

req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processStateChange;
req.open("GET", url, true);
req.send();
}
}
}

/*
* Set as the callback method for when XmlHttpRequest State Changes
* used by retrieveUrl
*/
function processStateChange() {

if (req.readyState == 4) { // Complete
if (req.status == 200) { // OK response

///alert("Ajax response:"+req.responseText);

//Split the text response into Span elements
spanElements = splitTextIntoSpan(req.responseText);

//Use these span elements to update the page
replaceExistingWithNewHtml(spanElements);

} else {
alert("Problem with server response:\n " + req.statusText);
}
}
}

/**
* gets the contents of the form as a URL encoded String
* suitable for appending to a url
* @param formName to encode
* @return string with encoded form values , beings with &
*/
function getFormAsString(formName){

//Setup the return String
returnString ="";

//Get the form values
formElements=document.forms[formName].elements;

//loop through the array , building up the url
//in the form /strutsaction.do&name=value

for ( var i=formElements.length-1; i>=0; --i ){
//we escape (encode) each value
returnString=returnString+"&"+escape(formElements[i].name)+"="+escape(formElements[i].value);
}

//return the values
return returnString;
}

/**
* Splits the text into <span> elements
* @param the text to be parsed
* @return array of <span> elements - this array can contain nulls
*/
function splitTextIntoSpan(textToSplit){

//Split the document
returnElements=textToSplit.split("</span>")

//Process each of the elements
for ( var i=returnElements.length-1; i>=0; --i ){

//Remove everything before the 1st span
spanPos = returnElements[i].indexOf("<span");

//if we find a match , take out everything before the span
if(spanPos>0){
subString=returnElements[i].substring(spanPos);
returnElements[i]=subString;

}
}

return returnElements;
}

/*
* Replace html elements in the existing (ie viewable document)
* with new elements (from the ajax requested document)
* WHERE they have the same name AND are <span> elements
* @param newTextElements (output of splitTextIntoSpan)
* in the format <span id=name>texttoupdate
*/
function replaceExistingWithNewHtml(newTextElements){

//loop through newTextElements
for ( var i=newTextElements.length-1; i>=0; --i ){

//check that this begins with <span
if(newTextElements[i].indexOf("<span")>-1){

//get the name - between the 1st and 2nd quote mark
startNamePos=newTextElements[i].indexOf('"')+1;
endNamePos=newTextElements[i].indexOf('"',startNamePos);
name=newTextElements[i].substring(startNamePos,endNamePos);

//get the content - everything after the first > mark
startContentPos=newTextElements[i].indexOf('>')+1;
content=newTextElements[i].substring(startContentPos);

//Now update the existing Document with this element

//check that this element exists in the document
if(document.getElementById(name)){

//alert("Replacing Element:"+name);
document.getElementById(name).innerHTML = content;
} else {
//alert("Element:"+name+"not found in existing document");
}
}
}
}
Sep 15 '06 #1
Share this Question
Share on Google+
1 Reply


P: 25
I am using Ajax with struts in web application.

from jsp i am calling a function of ajax.js onclick of a button.
code of that call function which calling from jsp given as below:-
onclick="retrieveURL('/application/home_page.do?processAction=ItinerarySearch','AfoHo meForm')"

after clicking on button i am getting following error:-

object does not support this property or method
at statement (Which i have made it bold in js file)

[i]content=newTextElements.substring(startContentPos)

if any one has solution plz help me.
thanks in advance..

contain of Ajax.js file

//global variables
var req;
var which;


/**
* Get the contents of the URL via an Ajax call
* url - to get content from (e.g. /struts-ajax/sampleajax.do?ask=COMMAND_NAME_1)
* nodeToOverWrite - when callback is made
* nameOfFormToPost - which form values will be posted up to the server as part
* of the request (can be null)
*/
function retrieveURL(url,nameOfFormToPost) {

//get the (form based) params to push up as part of the get request
url=url+getFormAsString(nameOfFormToPost);

//Do the Ajax call
if (window.XMLHttpRequest) { // Non-IE browsers
req = new XMLHttpRequest();
req.onreadystatechange = processStateChange;
try {
req.open("GET", url, true); //was get
} catch (e) {
alert("Problem Communicating with Server\n"+e);
}
req.send(null);
} else if (window.ActiveXObject) { // IE

req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processStateChange;
req.open("GET", url, true);
req.send();
}
}
}

/*
* Set as the callback method for when XmlHttpRequest State Changes
* used by retrieveUrl
*/
function processStateChange() {

if (req.readyState == 4) { // Complete
if (req.status == 200) { // OK response

///alert("Ajax response:"+req.responseText);

//Split the text response into Span elements
spanElements = splitTextIntoSpan(req.responseText);

//Use these span elements to update the page
replaceExistingWithNewHtml(spanElements);

} else {
alert("Problem with server response:\n " + req.statusText);
}
}
}

/**
* gets the contents of the form as a URL encoded String
* suitable for appending to a url
* @param formName to encode
* @return string with encoded form values , beings with &
*/
function getFormAsString(formName){

//Setup the return String
returnString ="";

//Get the form values
formElements=document.forms[formName].elements;

//loop through the array , building up the url
//in the form /strutsaction.do&name=value

for ( var i=formElements.length-1; i>=0; --i ){
//we escape (encode) each value
returnString=returnString+"&"+escape(formElements[i].name)+"="+escape(formElements[i].value);
}

//return the values
return returnString;
}

/**
* Splits the text into <span> elements
* @param the text to be parsed
* @return array of <span> elements - this array can contain nulls
*/
function splitTextIntoSpan(textToSplit){

//Split the document
returnElements=textToSplit.split("</span>")

//Process each of the elements
for ( var i=returnElements.length-1; i>=0; --i ){

//Remove everything before the 1st span
spanPos = returnElements[i].indexOf("<span");

//if we find a match , take out everything before the span
if(spanPos>0){
subString=returnElements[i].substring(spanPos);
returnElements[i]=subString;

}
}

return returnElements;
}

/*
* Replace html elements in the existing (ie viewable document)
* with new elements (from the ajax requested document)
* WHERE they have the same name AND are <span> elements
* @param newTextElements (output of splitTextIntoSpan)
* in the format <span id=name>texttoupdate
*/
function replaceExistingWithNewHtml(newTextElements){

//loop through newTextElements
for ( var i=newTextElements.length-1; i>=0; --i ){

//check that this begins with <span
if(newTextElements[i].indexOf("<span")>-1){

//get the name - between the 1st and 2nd quote mark
startNamePos=newTextElements[i].indexOf('"')+1;
endNamePos=newTextElements[i].indexOf('"',startNamePos);
name=newTextElements[i].substring(startNamePos,endNamePos);

//get the content - everything after the first > mark
startContentPos=newTextElements[i].indexOf('>')+1;
content=newTextElements[i].substring(startContentPos);

//Now update the existing Document with this element

//check that this element exists in the document
if(document.getElementById(name)){

//alert("Replacing Element:"+name);
document.getElementById(name).innerHTML = content;
} else {
//alert("Element:"+name+"not found in existing document");
}
}
}
}
I have used ajax to execute a php script to query a database. I have viewed the results with an alert confirming the scipt executed. When I tried to get the individual elements from the responseText using getElementById and getElementByName, but I have got "object does not support this property or method" with both. Can anyone tell me why this error is occuring?
Expand|Select|Wrap|Line Numbers
  1. <script type="text/javascript" language="javascript">
  2.     function displayParts()
  3.     {
  4.     var fieldname = new Array();
  5.     var parts = new Array();
  6.     var numfields;
  7.     var numrows;
  8.     document.write('<tr>');
  9.     for (j=0; j < numfields; j++)
  10.         {
  11.         document.write('<td><span id="fieldname[j]"></td>');
  12.         }
  13.     document.write('<\/tr>');
  14.     for (i=0; i < numrows; i++)
  15.         {
  16.         document.write('<tr>');
  17.         for (j=0; j < numfields; j++)
  18.             {
  19.             document.write('<td><span id="parts[i][j]" /></td>');
  20.             }
  21.             document.write('</tr>');
  22.         }
  23.     }
  24.     </script>
  25.  
Apr 24 '07 #2

Post your reply

Sign in to post your reply or Sign up for a free account.