【问题标题】:how to bind my dropdownlist by json result?如何通过 json 结果绑定我的下拉列表?
【发布时间】:2015-10-05 06:16:41
【问题描述】:

我在开发者工具网络选项卡中的 json 字符串是:

"{\"1\":\"GJ_CITY1\",\"2\":\"GJ_CITY2\",\"3\":\"GJ_CITY3\",
  \"4\":\"GJ_CITY1\",\"5\":\"Aman\",\"6\":\"Aman\",
  \"7\":\"Aman\",\"8\":\"Aman\",\"9\":\"Alwar\"}"

我看过各种文章,但那不起作用,我是 ajax 数据绑定的新手,我的 mvc 代码是

$.ajax({
        type:"GET",
        datatype:"JSON",
        url: queryLink,
        async: true,
        success: function (result) {

            $('#Cities').html("");//clear before bind
            $.each(result, function (i, Cities) {
                $("#Cities").append($('<option value=\"" + key + "\">" + val + "</option>'));
            });
        }
});

我的控制器代码是

 CitiesDao cities_obj = new CitiesDao();
        HybridNetworkHandoverdto obj = new HybridNetworkHandoverdto();
        var query1 = cities_obj.Details().Tables[0].AsEnumerable().Select(t => new CityDto
        {
            State_id = t.Field<long>("state_id"),
            State_name = t.Field<string>("state_name"),
            City_id = t.Field<long>("City_id"),
            City_name = t.Field<string>("City_name")
        }).ToList();
        ViewBag.cities = query1;
        Dictionary<string, string> abc = new Dictionary<string, string>();
        foreach (var item in query1)
        {
            abc.Add(item.City_id.ToString(),item.City_name);
        }

        //string jsonResult = JsonConvert.SerializeObject(abc);
        var jsonResult = new JavaScriptSerializer();
        var json = jsonResult.Serialize(abc);


        return Json(json, JsonRequestBehavior.AllowGet);

【问题讨论】:

  • 绑定有什么问题?
  • 显示生成该结果的控制器方法(您需要先修复它)
  • 您是否尝试过JSON.parse() 将您的字符串转换为实际的 JSON 对象?
  • datatype:"json" 使用 jquery 在 ajax 中,无需解析 @vijayP

标签: jquery ajax asp.net-mvc jquery-ui html.dropdownlistfor


【解决方案1】:

按照下面的方式做 -

$.each(result, function (i, value) {
    var html='<option value="'+i+'">' + value + '</option>'
    $("#Cities").append(html);
});

【讨论】:

  • 其实我不知道我是否应该用“key”和“value”来绑定它,所以我的json字符串建议我应该使用“key”和“value”来绑定数据。
  • 你确定Cities.valCities.key??好像undefined
  • 我不知道我是从演示项目中复制的,等待我发布我的控制器代码
  • @BRBHARDWAJ 在评论问题时查看我的 jsfiddle 链接
  • 感谢 Cerlin 我在回答时很着急.. 现在它可以工作了
【解决方案2】:
$.each(result, function (i, value) {
    var html='<option value="'+i+'">' + value + '</option>'
    $("#Cities").append(html);
});

这可行,但我必须使用 JSON.parse(),因为 @MKA 建议我不知道为什么它适用于 Json.parse()

顺便说一句,我正在使用斯蒂芬斯的答案。

【讨论】:

  • 这是因为你将它序列化了两次(使用 JavaScriptSerializer .Serialize() 方法和 Json() 方法,所以你必须在客户端将它解析回 Json。如果你删除了 var json = jsonResult.Serialize(abc); 那么你客户端不需要JSON.parse()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多