MVC中返回JSON格式以及客户端处理方法的总结
这两天在做评论的功能,大体意图是这样的:在主题下面有"评论(10条)",点开"评论(10条)"动态从服务器端获取这十条评论并显示出来,首先想到的处理方法就是用AJAX获取数据,然后填充到客户端。对于评论这种二维数据形式最好使用JSON格式了,在处理的过程中发现了一个问题就是客户端接收到数据之后需要使用eval函数处理一下,然后才能使用,另外服务器端输出的json格式也有要求,如果是一维的数据应该是这种格式:{a:1,b:2,c:'xxx'},如果是二维数据应该是这种格式:[{a:1,b:2,c:'xxx'},{a:11,b:22,c:'ggggg'}],我们经常使用的也就是一维和二维的数据了。
前台脚本:
$.ajax({
type: 'post',
url: '/Twitter/GetCommentList',
dataType: 'json',
data: 'tid=' + tid,
success: function(data) {
var json = eval("(" + data + ")");//必须处理否则出错
//alert(data);
for (var i = 0; i < json.length; i++) {
$("#td_comment_" + tid).append("<font color='blue'>" + json[i].name + "</font> " + json[i].content + " (" + json[i].posttime + ")" + "<br><hr><br>");
}
}
})
服务器端代码:
public JsonResult GetCommentList()
{
int itemCount = 5;
IList<TwitterComment> tclist = TwitterComment.SelectListByTwitterID(Convert.ToInt64(Request["tid"]));
StringBuilder sb = new StringBuilder();
sb.Append("[ ");
int i = 0;
foreach (TwitterComment tc in tclist)
{
i = i + 1;
if (i < tclist.Count)
sb.Append("{ name:'" + tc.Name + "', content:'" + tc.Content + "', posttime:'" + tc.PostTime + "' },");
else
sb.Append("{ name:'" + tc.Name + "', content:'" + tc.Content + "', posttime:'" + tc.PostTime + "' }");
}
sb.Append("]");
return Json(sb.ToString());
}