首页新闻找找看学习计划

AJAX在.net下如何返回一个正确的Json格式?

0
悬赏园豆:20 [已解决问题] 解决于 2013-05-05 11:22

jquery的ajax,现在只要设定参数dataType:'josn',就报错,求指导Ashx在不用ms.javascript如何生成一个正确的json格式返回?我现在都是用response.write("([数据])"),前台用eval(data)来实现的。

happydaily的主页 happydaily | 小虾三级 | 园豆:581
提问于:2013-04-24 19:24
< >
分享
最佳答案
0

经过我自己测试后得知,只有纯数据可以通过,哎回答的人都没有试过么?

happydaily | 小虾三级 |园豆:581 | 2013-05-05 11:22
其他回答(7)
0
using System.Web.Script.Serialization.JavaScriptSerializer 
yuancongxi | 园豆:195 (初学一级) | 2013-04-24 20:23
0

两点,注意返回值的header内容,以及json数据表示字段的必须是"而不能是'

sinhbv | 园豆:2579 (老鸟四级) | 2013-04-25 07:58

给个Ashx的代码呗,谢谢

支持(0) 反对(0) happydaily | 园豆:581 (小虾三级) | 2013-04-25 08:07
0

3.5下直接引用

using System.Web.Script.Serialization.JavaScriptSerializer 
越天 | 园豆:26 (初学一级) | 2013-04-25 10:01

我想知道是否可以不用这个类包装?自己手工的代码也能起效果?

支持(0) 反对(0) happydaily | 园豆:581 (小虾三级) | 2013-04-25 10:27

@happydaily: 

那就自己手动拼写字符串

支持(0) 反对(0) 越天 | 园豆:26 (初学一级) | 2013-04-25 10:38

@越天: 我就是不知道什么样的格式才是合格的,我试过([]),({}),或者是复杂一点的,都不能通过

支持(0) 反对(0) happydaily | 园豆:581 (小虾三级) | 2013-04-25 21:01

@happydaily: 

StringBuilder result = new StringBuilder();

for (int i = 0; i < list.Count; i++)
{
result.Append("{\"ID\":\"");
result.Append(list[i].ID);
result.Append("\",\"OrderType\":\"");
result.Append(list[i].OrderType);
result.Append("\",\"OrderID\":\"");
result.Append(list[i].OrderID);
result.Append("\",\"OrderName\":\"");
result.Append(list[i].OrderName);
result.Append("\"},");
}
result.Remove(result.Length - 1, 1);
context.Response.Write("{\"Rows\":[" + result + "],\"Total\":\"" + list.Count + "\"}");

支持(0) 反对(1) 越天 | 园豆:26 (初学一级) | 2013-04-25 22:35
0

你确定你服务器端返回的也是json格式 吗??

收获园豆:5
jerry-Tom | 园豆:4077 (老鸟四级) | 2013-04-25 10:55

不知道如何确定啊?

支持(0) 反对(0) happydaily | 园豆:581 (小虾三级) | 2013-04-25 21:01
0
  1. 自己拼接和用辅助类是没啥区别的.
  2. 要指定contenttype,你试试:context.Response.ContentType = "text/json";
收获园豆:5
相忘于江湖 | 园豆:229 (菜鸟二级) | 2013-04-25 21:27
0

在你的页面后台文件 加入

        #region Response设置
        public void DeclareResponse()
        {
            Response.Clear();
            Response.Buffer = true;
            Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
            Response.AddHeader("pragma", "no-cache");
            Response.AddHeader("cache-control", "");
            Response.CacheControl = "no-cache";
            Response.ContentType = "application/json";
        }
收获园豆:5
weblogical | 园豆:6 (初学一级) | 2013-04-26 18:01
0

ashx的contenTtype需要指定为 text/json,

收获园豆:5
邢少 | 园豆:10922 (专家六级) | 2013-04-28 10:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册