使用jquery和json ASP.Net MVC填充DropDownList

时间:2013-04-06 13:37:39

标签: jquery asp.net-mvc json

我的观点中有这个代码:

<script>
    var isChanged = false;
    $(function () {
        $('#stageOne').change(function () {
                $.ajax({
                    url: "/Shop/ChangeStageTwo/",
                    data: { item: $("#stageOne option:selected").text() },
                    type: 'post',
                    success: function (myJSONdata) {
                        $("#stageTwo").html("");      
                        var items = myJSONdata;
                        for (var i = 0; i < items.length; i++) {
                            var item = items[i];
                            var optionhtml = '<option value="' + item.text + '">' + items[i] + '</option>';
                            $("#stageTwo").append(optionhtml);
                        }
                 }
            });

        });
    });
</script>

这是我的ChangeStageTwo功能:

    public JsonResult ChangeStageTwo(string item)
    {
        // Do something...          

        var query = from f in db.Stages
                    where f.Code.Contains(tempDelivCod) && f.Code.Length > 4
                    select f.Name;
        var sItems = new SelectList(query);
        return Json(sItems, JsonRequestBehavior.AllowGet); 
    }

但是在运行时我在DropDownList中得到[object Object],而不是确切的值。有什么问题?

2 个答案:

答案 0 :(得分:1)

我认为这个功能会起作用:

var items = myJSONdata;//somethink like ["aa", "bb"]...
$(items).each(function(index, optionText) {
    $("#stageTwo").append($('<option />').attr('value', optionText).text(optionText));
});

答案 1 :(得分:0)

这一行:

var optionhtml = '<option value="' + item.text + '">' + items[i] + '</option>';

应该是这样的:

var optionhtml = '<option value="' + item.text + '">' + item.text + '</option>';

var optionhtml = '<option value="' + item.id + '">' + item.text + '</option>';

如果您提供JSON输出,我可以更具体。