I have a jsp form, such as ... The values ββin the second selection field, the state should be loaded based on the value in the first selection field (country). I use AJAX, JSON, Spring MVC to get the results.
index.jsp .....
<form:form name="myform" modelAttribute="search" action="POST"> <form:input path="firstName" class="text" /> <form:input path="lastName" class="text" /> <form:select path="country" id="country"> <form:option value="" label="--Choose A Value--"></form:option> <form:options items="${countryList}" itemValue="id" itemLabel="name"></form:options> </form:select> <form:select path="state" onchange="javascript:itemFocus('submit');" id="state"> <form:option value="" label="--Choose A Value--"></form:option> <form:options items="${stateList}" itemValue="id" itemLabel="description"></form:options> </form:select> <form:checkboxes items="${skillsList}" path="skills" itemLabel="description" itemValue="id" delimiter="<br>" /> <form:checkboxes items="${languagesList}" path="languages" itemLabel="description" itemValue="id" delimiter="<br>" /> </form:form>
controller....
@RequestMapping(value="stateslist.html") public @ResponseBody List<State> sectionList(@ModelAttribute("search") SearchForm search, @RequestParam(value="countryId", required=true) String countryId, ModelMap modelMap){ return stateService.getStates(countryId); }
Part of jQuery ....
<script type="text/javascript" charset="utf-8"> function getStates(){ $.getJSON( "stateslist.html", {countryId: $('#country').val()}, function(data) { var html = ''; var len = data.length; for(var i=0; i<len; i++){ html += '<option value="' + data[i].id + '">' + data[i].name + '</option>'; } $('#state').append(html); } ); } $(document).ready(function() { $('#country').change(function() { getStates(); }); }); </script>
I can see the debugger that the ajax request is sent to the Spring controller, and it returns a list of State objects that contains fields such as id, name, etc. The problem is that the option state choices do not change .. it seems that the function(data){....} not working. Can someone help me where I am doing wrong here ...
--- Update ---
I removed everything from the callback function and just did thi ..
function(data){alert("something");}
even that didnβt work ... it means the challenge never reached this part ...
RKodakandla
source share