1

我是 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函数中的变量数据。当我选择没有孩子的父母时,它将数据的值显示为“[]”。它只是在遇到函数(数据)时跳过所有脚本。有人知道吗?

4

1 回答 1

0

首先,您需要确保您的服务调用不会引发任何异常。其次,如果没有例外,您可能会缺少 spring 标签生成的 Id / 元素名称(假设您使用的是 spring 标签库)

于 2012-07-18T04:27:17.380 回答