It's not a secret anymore!*
The moose likes Struts and the fly likes readyState=4 and Http 404 error in Ajax /Struts Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "readyState=4 and Http 404 error in Ajax /Struts" Watch "readyState=4 and Http 404 error in Ajax /Struts" New topic
Author

readyState=4 and Http 404 error in Ajax /Struts

RoshaniG Gopal
Ranch Hand

Joined: May 15, 2006
Posts: 180
Hi all,
I trying to solve out this problem ... i am trying a double combo box but i cant make a head where i have gone wrong. WHen i run it, i get a Ready State=4 but along side i get Http 404 error. Also my action class is not called.(I had some SOPs there).
Please Please help me...
-----------
index.jsp
-----------

<html:html>

<title>Double Combo - Ajax In Action</title>
<script type="text/javascript" src="net.js"></script>
<script type="text/javascript">
alert('I am in double combo ajax in action');
function FillTerritory(oElem,oTarget){
alert('I am in fill territory function');
alert('oElem :'+oElem.value);
alert('oTarget :'+oTarget.value);
var strValue = oElem.options[oElem.selectedIndex].value;
alert('strValue :'+strValue);
var url = '/SecondOptionsAction.do';
var strParams = 'q=' + strValue +"&f=" + oTarget.form.name +"&e=" + oTarget.name;
alert('q'+ strValue);
alert('f'+ oTarget.form.name);
alert('e'+ oTarget.name);
var loader1 = new
net.ContentLoader(url,FillDropDown,null,"POST",strParams);

}
function FillDropDown(){
var xmlDoc = this.req.responseXML.documentElement;
alert('Im in FillDropDown');
var xSel = xmlDoc.getElementsByTagName('selectElement')[0];
alert('before strfname 0');
var strFName = xSel.childNodes[0].firstChild.nodeValue;
alert('before strfname 1');
var strEName = xSel.childNodes[1].firstChild.nodeValue;

var objDDL = document.forms[strFName].elements[strEName];
objDDL.options.length = 0;

var xRows = xmlDoc.getElementsByTagName('entry');
alert('I am in Fill Drop Down function');
for(i=0;i<xRows.length;i++){
var theText = xRows[i].childNodes[0].firstChild.nodeValue;
var theValue = xRows[i].childNodes[1].firstChild.nodeValue;
var option = new Option(theText,theValue);
objDDL.options.add(option,objDDL.options.length);
}
}
</script>
</head>
<body>
<html:form action="/SecondOptionsAction" styleId="inputForm">
<html:select property="ddlRegion" onchange="javascript:FillTerritory(this,document.forms[0].ddlTerritory)" styleId="Select1">
<html ption value="-1">Pick A Region</html ption>
<html ption value="Eastern">Eastern</html ption>
<html ption value="Western">Western</html ption>
<html ption value="Northern">Northern</html ption>
<html ption value="Southern">Southern</html ption>
</html:select>
<html:select property="ddlTerritory" styleId="Select2"></html:select>
</html:form>
</body>
</html:html>
---------------------------
--------------------------
Action Class
--------------------
package com.cris;
import org.apache.log4j.*;
import com.cris.ResultBean;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import java.io.*;

import java.util.*;
import java.sql.*;
import java.sql.Connection;

import javax.servlet.http.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class SecondOptionsAction extends Action
{
public ArrayList fillDataTable(String sqlQuery )
{
ArrayList results= new ArrayList();
ResultSet rs=null;
Connection con=null;
try
{
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>");
System.out.println("----fillDataTable Method----");
System.out.println(">>>>>>>>>>>>>>>>>>>>>>");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc dbc:ankitDB1","scott","tiger");
Statement st=con.createStatement();
rs= st.executeQuery(sqlQuery);
while (rs.next())
{
//ArrayList results= new ArrayList();
System.out.println(">>>>>>>>>>>>>>>>>>");
System.out.println("-Inside rs.next()");
System.out.println(">>>>>>>>>>>>>>");
ResultBean resultBean = new ResultBean();

resultBean.setTerritoryDescription( rs.getString("TerritoryDescription") );
resultBean.setRegionid(rs.getString("regionid"));
resultBean.setTerritoryID(rs.getString("TerritoryID"));

results.add(resultBean);
System.out.println(">>>>>>>>>>>>>>>>");
System.out.println("---results added ---");
System.out.println(">>>>>>>>>>>>>>>>>>>>");
}
}
catch(Exception e)
{
System.out.println("Exception "+e);
}
finally
{
if (rs != null)
{
/*
Statement stmt = rs.getStatement();
if (stmt != null)
{
stmt.close();
}
*/
//rs.close();
//con.close();
}
}
return results;
}

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/xml");
String strQuery="";
// 'q' is the selected Region='Eastern'
strQuery = request.getParameter("q");
String strForm="";
// 'f' is the name of the form
strForm = request.getParameter("f");
String strElem="";
// 'e' is the second select (teritory)in the jsp= 'assam'
strElem = request.getParameter("e");
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
System.out.println("-----------Action Class-----------------");
System.out.println("the Region, is set as ["+strQuery+"]");
System.out.println("the form, is set as ["+strForm+"]");
System.out.println("the territory is set as ["+strElem+"]");
System.out.println(">>>>>>>>>>>>>>>>>>>>");

String strSql = "SELECT TerritoryDescription,TerritoryID FROM Territories"
+ " WHERE regionid ='" + strQuery +"' ORDER BY TerritoryDescription";

ArrayList dtOptions=new ArrayList();
System.out.println("!!!");
System.out.println("------After the Query-------");
System.out.println("the Query is ["+strSql+"]");
System.out.println("!!!>");

dtOptions=fillDataTable(strSql);

while(!(dtOptions.isEmpty()))
{
for(Iterator iterator=dtOptions.iterator();iterator.hasNext()
{
ResultBean rb = new ResultBean();
rb = (ResultBean) iterator.next();
String terr_description = rb.getTerritoryDescription();
System.out.println(">>>>>>>>>>>>>>>>>>>>");
System.out.println("---Im in Iterator---");
System.out.println("the terr_description is ["+terr_description+"]");
String terr_id=rb.getTerritoryID();
System.out.println("the terr_id is ["+terr_id+"]");
System.out.println(">>>>>>>>>>>>>>>>>>>");

StringBuffer strXML= new StringBuffer("<?xml version=1.0 ?>");
System.out.println("--------------");
System.out.println("-----XML Creation---");
System.out.println("--------------------");

strXML.append("<selectChoice>");
strXML.append("<selectElement>");
strXML.append("<formName>"+strForm+"</formName>");
strXML.append("<formElem>"+strElem+"</formElem>");
strXML.append("</selectElement>");
System.out.println(">>>>>>>>>>>>>>");
System.out.println("--<selectChoice>------");
System.out.println(">>>>>>>>>>>>>>>>>>");

strXML.append("<entry>");
strXML.append("<optionText>Select A Territory</optionText>");
strXML.append("<optionValue>-1</optionValue>");
strXML.append("</entry>");
System.out.println("--------------");
System.out.println("----creating entry--");
System.out.println("----------------");
strXML.append("<entry>");
strXML.append("<optionText>"+terr_description
+"</optionText>");
strXML.append("<optionValue>"+terr_id
+"</optionValue>");
strXML.append("</entry>");
strXML.append("</selectChoice>");
System.out.println("------------------");
System.out.println("----XML End-----");
System.out.println("----------------");
}
}
return mapping.findForward("index");

}
}
--------------------------------------
cant post the Net.js ....sys doent allow me...
--------------------------------------
Please help me....
Regards,
Roshani
[ September 11, 2006: Message edited by: RoshaniG Gopal ]

Regards,<br />Roshani
Anay Nayak
Greenhorn

Joined: Aug 15, 2006
Posts: 26
Hi

Since your action class is not being called, most probably your request is not being set properly.

Try calling the action class directly by setting the url location to

http:// <server name >/ context path/ SecondOptionsAction.do? requestparams

see if you get the proper xml output.
RoshaniG Gopal
Ranch Hand

Joined: May 15, 2006
Posts: 180
HI anay,
Thanks for the reply, but still cant get things to work out.

Regards,
Roshani
Anay Nayak
Greenhorn

Joined: Aug 15, 2006
Posts: 26
did you try calling the action class directly? Did it return any output ? If that failed..then i guess you have not set the configuration properly.

Another thing that i noticed, what's the purpose of strXML? You dont seem to be using it. I guess that was supposed to be part of the output

Check the last post by Merrill over here
[ September 13, 2006: Message edited by: Anay Nayak ]
RoshaniG Gopal
Ranch Hand

Joined: May 15, 2006
Posts: 180
Hi Anay,
Thanks a lot for the replies.. The link was really usefull i wonder how i missed it..Im quite regular..anyhow..I changed the whole thing to a new one.. Im posting it in a new thread as else i would be hijacking this one..Im having problem in the XML reposonse..
Regards,
Roshani
 
 
subject: readyState=4 and Http 404 error in Ajax /Struts
 
Similar Threads
Retrieve objects from ArrayList
reponseXML empty Ajax/Struts
document.Form1 has no properties error
Error:"Component returned failure code
Problem with Ajax Double Combo