【问题标题】:Could not Append to select tag by javascript and jquery无法通过 javascript 和 jquery 附加到选择标签
【发布时间】:2015-11-30 06:37:53
【问题描述】:

我正在做一个 mvc 5 项目,我有购物车视图,我有 2 个名为 country 和 state 的 deopdownlist,当它运行时,国家模型填充国家下拉列表,现在我想在国家下拉列表更改时填充国家下拉列表所以我使用下面的代码来执行此操作,但它无法成功运行。我调试此代码它可以正常运行,唯一的问题是此代码无法附加到状态下拉列表。我不知道该怎么做

@model IEnumerable<NewMVCWebApp.Models.Country>
<script>
    function f11() {
        var a = $("#se option:selected").text();
        var b = $("#se option:selected").index();
         $.ajax({           
            url: "/State/GetStates",
            data: { a: a, b: b },
            type:"post",
            success: function (value) {
                cities = JSON.parse(value);
                $("#ss").html("");
                $("#ss").append("<option>--- please select---</option>");
                $.each(cities, function (idx, city) {
                    $("#ss").append("<option value='" + city.ID + "'>" + city.name + "</option>")
                })

            },
            error: function () {
                $("#lbl").html("Error in Ajax...!");
            }
        })

      }
</script>

<div class="tabs-b">

    <ul>
        <li>estimate</li>

    </ul>
    <div>
        <div>
            <p>enter destination</p>
            <p class="required">
                <label for="sha">Country</label>
                <select id="se" name="Country" onchange="f11()">
                    <option>--- please select ---</option>
                    @foreach (var item in Model)
                    {
                        <option value="@item.ID">@item.name</option>
                    }
                </select>

            </p>
            <p class="required">
                <label>region</label>
                <select id="ss"></select>
            </p>
            <p>
                <label for="shc">post code</label>
                <input type="text" name="shc" id="shc" required="">
            </p>
            <p class="link-c">@*<a href="./">get</a>*@</p>
        </div>
        <div>
            <p></p>
        </div>
        <div>
            <p></p>
        </div>
    </div>
</div>

控制器中的动作

public string  GetStates(string a,string b)
{
JavaScriptSerializer js = new JavaScriptSerializer();
List<state> states = _context.states.Where(x => x.IDK == Idk).ToList();
return js.Serialize(states.Select(x => new { ID = x.ID, name = x.name }));
}

【问题讨论】:

    标签: javascript select model tags fill


    【解决方案1】:

    在控制器中将方法类型更改为 JsonResult

     public JsonResult  GetStates(int index)
        {
            JsonResult json = new JsonResult();
            json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            json.Data = _context.states.Where(x => x.IDK == index).ToList();
            return json;
        }
    

    在html文件中

    function f11() {
            var index = $("#se option:selected").val();
             $.ajax({           
                url: "/State/GetStates",
                data: { index: index },
                type:"post",
                success: function (value) {
                    var result  = "";
                    $("#ss").append("<option>--- please select---</option>");
                    $.each(value, function (index, city) {
                         result += "<option value='" + city.ID + "'>" + city.name + "</option>";
    
                    });
                    $("#ss").append(result);
    
                },
                error: function () {
                    $("#lbl").html("Error in Ajax...!");
                }
            })
    
          }
    

    【讨论】:

    • 感谢您的帮助,但它不起作用。我调试了这段代码,它工作正常,jquery 和 json 再次正常工作,但 JUSTTTTTTTTTTTTT 在最后一步无法申请。我不知道该怎么做。请帮助我
    • 如果将
    • 我试过你的代码。这和我的代码一样完美。但两者都不能追加
    猜你喜欢
    • 2013-05-22
    • 2015-06-25
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多