【问题标题】:spring mvc dynamic on change dropdown to other dropdownspring mvc dynamic on change dropdown to other dropdown
【发布时间】:2012-03-21 14:15:20
【问题描述】:

我有两个下拉列表。 第一个下拉: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>

第二个dropdwon:

<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 调用此方法

函数 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 的值并将其绑定到控制器中。当我选择第一个下拉列表的值时,其对应的值应该绑定在第二个下拉列表中。

为此,我使用了 ajax 和 jquery...我成功地将值传递给控制器​​并将值传递给 ajax..但问题是下拉框中的值没有绑定。 谁能告诉我可能出了什么问题?

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

【问题讨论】:

    标签: jquery ajax spring-mvc


    【解决方案1】:

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

    【讨论】:

    • @viquar 被“引导”为某种类型的对象列表。因为在第一个组合中您已经访问了“led.ledName”,但在第二个下拉列表中您已将对象本身分配给值,例如 value="{led}"。是否应该按照您在第一个下拉列表中的类似方式分配它。您可以做的一件事是在更改第一个下拉列表之前尝试查看 html 并查看它的外观。因为在 ajax 中你得到一个字符串值,但在第二个下拉列表中你将下拉列表的值分配为“led”对象。
    • ,兄弟在第二个下拉菜单中,我只给出了 value=${led},即使我尝试使用 value=${variableName.led},它也没有显示值......它没有绑定...是这样吗?
    • 我不明白的一件事是下拉一个和两个你试图填充相同的值。是按要求吗。也是“引导”一个对象,我的意思是该对象的类型。那是您自己的自定义对象吗?正如我之前所说,下拉菜单没有标签。您可以尝试这样做 并检查吗?
    • 我也尝试过类似的方法,但它仍然没有在下拉列表中显示值...是我得到的值 i alertbox 但不是在下拉列表中...
    • 唯一的方法是在渲染页面后查看 html,并查看下拉列表中的所有值 2. 如果在加载时本身没有值,那么显然它可能也不会出现在 ajax 调用中...
    【解决方案2】:

    据我了解,您可以成功地从服务器获取数据。因此,您的 url、映射和参数正确发送。但返回的响应未反映在浏览器中。如果我理解正确,您需要刷新页面(dom 树或特定组件)使用新数据。像this

    【讨论】:

    • 兄弟值也显示在警报中..但不在 DropDrown 字段中。
    【解决方案3】:

    您当前的代码将无法工作,因为它是一个 ajax 调用。并且 $ 函数仅在页面加载时起作用,这意味着它只会在页面加载时绑定任何变量。这就是为什么您必须删除第二个下拉选项的 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 2021-07-11
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多