ASP.NET MVC返回字符串列表后,jQuery遍历异常问题求助
问题分析与解决方案
我来帮你排查下问题,你遇到的「超长字符串」其实是因为Ajax请求没有正确解析返回的JSON数据,再加上几个小的代码错误,一起来修正:
1. 修正Ajax的dataType参数
你控制器返回的是Json(lstCmt),但Ajax里设置了dataType: "html"——这会让jQuery把返回的JSON数据当成纯文本/html处理,所以你看到的是未经解析的原始JSON字符串。把它改成dataType: "json",或者直接去掉这个参数(jQuery会自动根据响应头判断数据类型)。
2. 修正DOM选择器的拼写错误
你的视图里评论容器的id是cments,但JS里误写成了$('#comments')(多了一个字母o),这样根本找不到要插入内容的元素,修正成$('#cments')即可。
3. 修正遍历的取值方式
因为你返回的是纯字符串列表,$.each遍历的时候每个name就是列表里的字符串本身,不需要.Value,直接用name就能拿到内容。
修正后的完整视图JS代码
$(document).ready(function() { $("#ldBtn").on('click', function(evt) { $("#cments").empty(); $.ajax({ type: "POST", dataType: "json", // 修正为JSON类型 url: '@Url.Action("GetComments")', data: {}, success: function(lists) { // 修正选择器和取值逻辑 $.each(lists, function(i, name) { $('#cments').append('<p>' + name + '</p>'); }); } }); }); });
如果后续你的lstCmt改成了复杂对象列表(比如包含Value属性的实体类),再把name改回name.Value就可以了。
内容的提问来源于stack exchange,提问作者Fast Chip
相关产品推荐
相关产品推荐

