JQuery, JSON, Spring MVC - Dynamisch laden wählen Sie Optionen
Ich habe eine jsp-Formular wie dieses... Werte, die in der zweiten select-box, Zustand geladen werden soll, basierend auf dem Wert in der ersten select-box (Land). Ich bin mit AJAX, JSON, Spring MVC zum abrufen von Ergebnissen.
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);
}
JQuery-Teil....
<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>
Kann ich sehen form der debugger, dass der ajax-request wird immer eingereicht, um die Frühjahr-controller und tut es gibt eine Liste von Status-Objekte, die Felder wie id, name etc... Problem ist, dass der Staat wählen Sie die Optionen nicht ändern.. scheint zu sein, dass function(data){....}
Teil nicht funktioniert..kann jemand mir helfen, wo mache ich hier falsch...
- - - - Update---
Habe ich entfernt alles, was von der callback-Funktion und hatte gerade thi..
function(data){alert("something");}
das gar nicht funktioniert..., dass meine call-nie erreicht, dass ein Teil...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich den gleichen code, wo die Stadt (cityId) Werte werden entsprechend geändert country (countryId) Auswahl. Es funktioniert perfekt:
So, ich denke, Sie brauchen nur zu addieren "wählen Sie" prefix".
Im aktualisieren Ihrer controller-Methode zu vermeiden, dass eine
406 Not Acceptable
Fehler:und Ihre JQuery-Teil:
Fügen Sie die unten Abhängigkeit zu Ihrem
pom.xml
:Schließlich hinzufügen
@ResponseBody
Anmerkung in deiner controller-Klasse.