spring mvc dynamic on change下拉到其他下拉列表

时间:2012-03-21 14:15:20

标签: jquery ajax spring-mvc

我有两个下拉列表。 第一次下拉:1     在这里输入代码

<form:select path="custName" id="custName">
    <form:option value="walk_in">Walk In</form:option>
    <c:forEach var="led" items="${name}">
        <form:option value="${led.ledName}">${ledger.ledName}</form:option>
    </c:forEach>
</form:select>

第二滴:

<form:select path="customerName" id="c01">
        <option value="walk_in">Walk In</option>
        <c:forEach var="led" items="${name}">
        <form:option  value="${led}">
        </form:option>
        </c:forEach>
        </form:select>

我有以下Spring Controller

@Controller
@RequestMapping("/accreq")

使用以下映射

    @RequestMapping(value="/creditAccount_name.htm",method=RequestMethod.GET)
        public @ResponseBody String GetName(@RequestParam(value="credit",required=true)String customername, ModelMap model){
            List<Journal> journals=journalDao.getReceiptTypeName(customername);
            System.out.println(customername);
            String ID = journals.get(0).getJournalId().toString();
            System.out.println(ID);
            return ID;//here i am getting the value in console
        }

我正在尝试使用以下jquery ajax

调用此方法

function getAjaxReceipt(){

var custname=$("#custName").val();
if(custname!="walk_in"){
    $.ajax({
        type:'GET',
        url:'creditAccount_name.htm',
        data:{credit:custname},
        success:function(data){
            $('#c01').val(data);//this is the feild id of second drop down value should display here...but is show empty...
            alert(data);//here also i am getting the alertbox in jsp
        },
        error:function(xmlHttpRequest, textStatus, errorThrown){
            if(xmlHttpRequest.readyState=0 || xmlHttpRequest.status == 0)
                return;
        },
    });
}

方案是我通过查询得到第一个dropdwon的值并将其绑定在controller中。当我选择第一个下拉列表的值时,其对应的值应该在第二个下拉列表中绑定。

因为我已经使用了ajax和jquery ...我成功地获取了控制器的值并将值传递给ajax ..但问题是值没有绑定在下拉框中。 任何人都可以告诉我可能出了什么问题吗?

prblem是在值显示在警报中...它没有显示在第二个下拉列表中。?

3 个答案:

答案 0 :(得分:1)

我理解你可以从服务器中获取数据。所以你的网址,映射和params正确发送。但返回的响应没有反映在浏览器中。如果我理解正确你需要刷新页面(dom树,或特定组件)新数据。与this

相似

答案 1 :(得分:1)

我在第二次下拉中看到<form:option value="${led}"></form:option>。您拥有该下拉列表的值,但没有为此设置显示标签,但对于第一个下拉列表,您有<form:option value="${led.ledName}">${ledger.ledrName}</form:option>。这是正确完成的,但你没有正确显示它?

答案 2 :(得分:0)

您的当前代码无效,因为它是一个ajax调用。并且$ function仅适用于页面加载,这意味着它将仅在页面加载时绑定任何变量。这就是为什么你必须删除第二个下拉列表的选项html代码并添加第二个下拉选项的java脚本代码,如下所示:

myselect = document.getElementById("c01");

//第二个选项

theOption=document.createElement("OPTION");

theText=document.createTextNode("JavaScript Tutorial II");

theOption.appendChild(theText);

//此选项有一个值,一个URL,所以我们设置值

theOption.setAttribute("value","index.html");

myselect.appendChild(theOption);