Simple Ajax For Filling State and Country Combo

Ajax.jsp


<%@page contentType="text/html" pageEncoding="UTF-8" import="com.test.AjaxClass.*"%>
var XmlHttp=false;

        function CreateXmlHttp()
        {
            try
            {
                XmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //for IE6
            }
            catch(e)
            {
                try
                {
                    XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(oc)
                {
                    XmlHttp = new XMLHttpRequest();//for browser mozila, opera, firefox.
                }
            }
        }

        function cState(){
            var countid = document.getElementById('country').value;
            CreateXmlHttp();
            XmlHttp.onreadystatechange=HandleResponse;
            XmlHttp.open("GET", "any.jsp?r=Math.random()&countid="+countid, true);
            XmlHttp.send(null);
        }
        function HandleResponse(){
            var stateobj = document.getElementById("state");
            stateobj.options.length = 0;
            if(XmlHttp.readyState==4 || XmlHttp.readyState=="complete"){
                var XmlRoot = XmlHttp.responseXML.documentElement;
                var xRows = XmlRoot.getElementsByTagName("check");
                for(var i=0; i<xRows.length; i++){
                    var stateid = xRows[i].childNodes[0].firstChild.nodeValue;
                    var statename = xRows[i].childNodes[1].firstChild.nodeValue;
                    stateobj.options[i] = new Option(statename,stateid);
                }
            }
        }

    </script>
</head>
<body>
    <select onchange="cState();" name="country" id="country">
        <option value="0">Select Country</option>
        <%
                    for (CountryClass cc : ajax.getCoutryList()) {
        %>
        <option value="<%=cc.getCountryid()%>"><%=cc.getCountryName()%></option>
        <%                            }
        %>
    </select>
    <select name="state" id="state">

    </select>
</body>

any.jsp

<?xml version="1.0"?>
<%@page contentType="text/xml" pageEncoding="UTF-8" import="com.test.AjaxClass.*"%>
<jsp:useBean id="call"/>
<test>
 <%
 int countid = Integer.parseInt(request.getParameter("countid"));
 //System.out.println("tt :: " + countid);
 java.util.List statelist = call.changeState(countid);
 //System.out.println("length ::" + statelist.size());
 for (StateClass sc : statelist) {
 %>
<check>
 <test1>   <%=sc.getStateid()%>  </test1>
 <test2>   <%=sc.getStateName()%>  </test2>
 </check>
 <%
 }
 %>
</test>

AjaxClass.java

package com.test;

import java.util.ArrayList; import java.util.List;

public class AjaxClass {
coutryList.add(new CountryClass(4, "U.A.E."));
 return coutryList;
}

public void setCoutryList(List coutryList) {
 this.coutryList = coutryList;
}

public class CountryClass {

 public Integer countryid;
 public String countryName;

 public String getCountryName() {
 return countryName;
 }

 public void setCountryName(String countryName) {
 this.countryName = countryName;
 }

 public Integer getCountryid() {
 return countryid;
 }

 public void setCountryid(Integer countryid) {
 this.countryid = countryid;
 }

 public CountryClass(Integer countryid, String countryName) {
 this.countryid = countryid;
 this.countryName = countryName;
 }
}
private List stateList = new ArrayList();

public List getStateList() {
 stateList.add(new StateClass(1, 1, "Gujarat"));
 stateList.add(new StateClass(2, 1, "Maharashtra"));
 stateList.add(new StateClass(3, 2, "Karachi"));
 stateList.add(new StateClass(4, 2, "Lahore"));
 stateList.add(new StateClass(5, 3, "Dhaka"));
 stateList.add(new StateClass(6, 3, "Chittagong"));
 stateList.add(new StateClass(7, 4, "Dubai"));
 stateList.add(new StateClass(8, 4, "Behrin"));
 stateList.add(new StateClass(9, 4, "Sarjah"));
 return stateList;
}

public void setStateList(List stateList) {
 this.stateList = stateList;
}

public class StateClass {

 Integer stateid;
 Integer countryref;
 String stateName;

 public Integer getCountryref() {
 return countryref;
 }

 public void setCountryref(Integer countryref) {
 this.countryref = countryref;
 }

 public String getStateName() {
 return stateName;
 }

 public void setStateName(String stateName) {
 this.stateName = stateName;
 }

 public Integer getStateid() {
 return stateid;
 }

 public void setStateid(Integer stateid) {
 this.stateid = stateid;
 }

 public StateClass(Integer stateid, Integer countryref, String stateName) {
 this.stateid = stateid;
 this.countryref = countryref;
 this.stateName = stateName;
 }
}

public List changeState(Integer countryref) {
 List newList = new ArrayList();
 for (StateClass stateClass : getStateList()) {
 if (stateClass.countryref == countryref) {
 newList.add(stateClass);
 }
 }
 return  newList;
}
Advertisements
This entry was posted in AJAX and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s