Hi,
I want to populate dependednt drop down boxes using Ajax. I am using dom4j
to build the xml response that I want to send.
I have the following in My Action.

DynaActionForm dynaDropDownForm = (DynaActionForm) form;
           String selectedVal = (String) dynaDropDownForm.get
("selectedVal");
           String selectedList = (String) dynaDropDownForm.get
("selectedList");

           System.err.println(
               "Selected Val:"
                   + selectedVal
                   + " Selected list:"
                   + selectedList);

           Document document = DocumentHelper.createDocument();
           Element root = document.addElement("options");
           for (int i = 0; i < 5; i++) {
               Element optionElement = root.addElement("option");
               optionElement.addAttribute("value", "" + i);
               optionElement.addAttribute("text", "Option " + i);
           }

           PrintWriter out = response.getWriter();
           OutputFormat outputFormat = OutputFormat.createCompactFormat();
           XMLWriter writer = new XMLWriter(out, outputFormat);
           writer.write(document);
           writer.flush();
           return null;


My javascript function is as follows
var req;
function changed(which,list) {
   var url="<%=request.getContextPath()%>/MyProj/getList.do?";
   var selectedVal = list.options[list.selectedIndex].value;
   if(window.XmlHttpRequest) {
       req = new XmlHttpRequest();
   }else if(window.ActiveXObject) {
       req=new ActiveXObject("Microsoft.XMLHTTP");
   }
   if(req==null) {
       alert("Browser Doesnt Support AJAX");
       return;
   }
   req.onreadystatechange = function() {
       populate(which);
   }
   url = url + "selectedList=" + (which-1) + "&selectedVal=" + selectedVal;
   alert(url);
   req.open("GET",url,true);
   req.send(null);
}
function populate(which) {
   if (req.readyState==4 || req.readyState=="complete") {
       alert('Got Data' + req.responseText);
       var xmldoc = req.responseXML.documentElement;
       if(xmldoc == null) {
           alert("No Data");
           return;
       }
       var options = xmldoc.getElementsByTagName();
       var targetList = document.getElementById("select_" + which);
       for(i=0;i<options.length;i++) {
           targetList.options[i+1] = new Option(options.getAttribute
("text"),options.getAttribute("value"));
       }
   }
}

The problem is that I am not getting a proper response from server.. What i
get in my responseText is following.
<options>
<option value="0" text="Option 0"/>
<option value="1" text="Option 1"/>
<option value="2" text="Option 3"/>
<option value="3" text="Option 3"/>
<option value="4" text="Option 4"/>
</options>
Error 500: Server Caught Unhandled exception from servlet [action]: null

SO this Error 500 is what prevents me from parsing the XML. I am using
Websphere 5.1 with struts 1.1

ANother Strange Problem is in on my WSAD console i dont get any exception
stack trace, not even the sysouts that I have put in.

ANy clues??

--
Puneet

Reply via email to