我是 Spring MVC 的新手。我希望我的jsp页面使用ajax填充另一个选择框的更改事件的选择框..
jsp页面就像..
<c:url var="RatePlanOfClientURL" value="/ratePlansofUser.jav" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<link rel="stylesheet" href="Scripts/jquery-ui-1.8.16/themes/base/jquery-ui.css" type="text/css" />
<link rel="stylesheet" href="Scripts/jquery-ui-1.8.16/themes/base/jquery.ui.autocomplete.css" type="text/css" />
<script src="Scripts/jquery-ui-1.8.16/jquery-1.6.2.js"></script>
<script type="text/javascript" src="Scripts/jquery-ui-1.8.16/ui/jquery-ui.js"></script>
<script type="text/javascript" src="Scripts/jquery-ui-1.8.16/ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="Scripts/jquery-ui-1.8.16/ui/jquery.ui.position.js"></script>
<script type="text/javascript" src="Scripts/jquery-ui-1.8.16/ui/jquery.ui.widget.js"></script>
<script type="text/javascript">
window.scrollTo(0, 1);
</script>
<script type="text/javascript">
$(document).ready(function() {
$("#parentClient").change(function(){
$.getJSON('${RatePlanOfClientURL}', {
clientId : $(this).val(),
ajax : 'true'
},
function(data) {
alert("hai");
var html = '<option value="">Select '+$("#parentClient").val()+'</option>';
var len = data.length;
for ( var i = 0; i < len; i++) {
html += '<option value="' + data[i].rateID + '">' + data[i].rateName
+ '</option>';
}
html += '</option>';
$('#ratePlanList').html(html);
});
});
});
</script>
<fieldset>
<div>
<label> Parent Account</label>
<form:select id="parentClient" path="reseller.clientResellerParentId" class="addDropdown">
<form:option value="0" label="Select Parent"></form:option>
<form:options items="${ClientList}" itemValue="clientId" itemLabel="clientName"/>
</form:select>
</div>
<div>
<label >Rate Plan</label>
<form:select id="ratePlanList" path="reseller.resellerRateplan.ratePlanID" class="addDropdown">
<form:option value="0" label="Select RatePlan"></form:option>
<form:options items="${RatePlanList}" itemValue="rateID" itemLabel="rateName"/>
</form:select>
<form:errors path="reseller.resellerRateplan.ratePlanID" cssStyle="color:red"></form:errors>
</div>
</fieldset>
在我的控制器类中
@RequestMapping(value = "/ratePlansofUser.jav", method = RequestMethod.GET)
public @ResponseBody List<RatePlanData> ratePlansForClient(
@RequestParam(value = "clientId", required = true) Integer clientId,
HttpSession session)
{
System.out.println("Reached Controller for "+clientId);
return ratePlanService.getRatePlanForClient(clientId);
}
Atlast 我拥有的数据库控制器类
public List<RatePlanData> getRatePlanForClient(int id)
{
Criteria myCriteria = sessionfactory.getCurrentSession().createCriteria(RatePlanData.class);
myCriteria.add(Restrictions.eq("clientID",id ));
return myCriteria.list();
}
每当我更改我的 parentclient 选择框时,控制器方法都会调用(System.out.println("Reached Controller for "+clientId);
正在打印)。当我选择一个没有孩子的父母时,该脚本中的警报框正在显示。但是当我打电话给有孩子的父母时,它不起作用(那个警报框没有显示,但System.out.println("Reached Controller for "+clientId);
正在控制台打印)。
谁能指出可能是什么问题?
提前致谢..
编辑..我用firebug检查了脚本中ajax函数中的变量数据。当我选择没有孩子的父母时,它将数据的值显示为“[]”。它只是在遇到函数(数据)时跳过所有脚本。有人知道吗?