json返回格式

fabulous 2011-02-05 05:13:08
大家新年快乐。
Invalid JSON:
{x:
[
{Id:"11",Name:"美国十六天游标准行程"},
{Id:"12",Name:"德法荷比卢奥瑞捷意梵十国十四日游"},
{Id:"49",Name:"英国瑞士八日游"},
{Id:"50",Name:"非凡泰新马升级版9晚11天"}
]
};
找不到这个返回格式哪里不对。用的jq是1.4.4
...全文
4480 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyerwing 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
格式不正确
如{"name":"a","age":"12"}
eval转换下
[/Quote]
估计是了.
MARK.
fabulous 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 net_lover 的回复:]
你可以使用
<script src="jquery-1.5.min.js"></script>
测试
你可以查看测试的结果
http://dotnet.aspx.cc/Default5.aspx

另外注意路径、编码等问题

这个问题你节前的一段时间就问过啊
[/Quote]
用1.5的他js调试的时候全部都在一行,很不好像1.4.4那样辨认他try catch的时候在哪。
恩 你那个可以出来。纳闷,我的格式应该也是对的,按你们说的那样每个属性和值都加了双引号的。
路径:
js是在根目录下Js的文件夹里
<script src="Js/jquery-1.4.4.js" type="text/javascript"></script>
ho.ashx和页面是在根目录下。
编码:
页面上没有动过,ho.ashx是context.Response.ContentType = "text/plain";
节前问的时候的确是格式出问题了,数组里最后一个逗号","没有去掉。
然后格式改好了后还是不行,但是刚好放假了.就回去了,这几天要是没出去就弄弄,但是还是不行.
完后调试的时候他try catch出错那里,就想我在11L说的.现在好像还是格式哪里不对,但是又都加了双引号.
ho.ashx文件:

//获取ID
//查询数据放到list
string s = string.Empty;
if (find_list.Count > 0)
{
s = s + "{\"x\":[";
foreach (tb_content cf in find_list)
{
s = s + "{\"Id\":\"" + cf.C_ID + "\",\"Name\":\"" + cf.Title + "\"},";
}
s = s + "]};";
s = s.Substring(0, s.Length - 4) + s.Substring(s.Length - 3, 3);//把最后一个记录{}后的逗号","去掉
}
else
{
s = "暂无数据";
}
context.Response.Write(s);

前台:

<script src="Js/jquery-1.4.4.js" type="text/javascript"></script>

<%--<script src="Js/jquery-1.5.min.js" type="text/javascript"></script>--%>

<script type="text/javascript">
function f(v) {
$.getJSON(
"ho.ashx?id=" + v + "&" + Math.random(),
function(data) {
alert("aaa");
alert(data.x.length);
}
);
}
</script>
powerchuangwai 2011-02-09
  • 打赏
  • 举报
回复
字段,值用引号引起来。

另外,大括号,中括号嵌好就行了。
guyehanxinlei 2011-02-09
  • 打赏
  • 举报
回复
Friendly Up
cjh200102 2011-02-09
  • 打赏
  • 举报
回复
楼上正确
yanbinquan 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 net_lover 的回复:]

{"x":
[
{"Id":"11","Name":"美国十六天游标准行程"},
{"Id":"12","Name":"德法荷比卢奥瑞捷意梵十国十四日游"},
{"Id":"49","Name":"英国瑞士八日游"},
{"Id":"50","Name":"非凡泰新马升级版9晚11天"}
]
};
要求都必须用引号括起来
[/Quote]

正解
fabulous 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 net_lover 的回复:]
//获取ID
//查询数据放到list

你先把你的生成结果打印出来。
你的生成结果是错误的,
按照你贴的内容,结果已经是正确的了,你还不明白问题在吗?

你查询数据库,可能是有需要转移的字符导致的。比如内容存在"等需要进行转义的字符。
[/Quote]
打印出来看果然是了。
非常感谢大伙的回复。再次祝大家新年快乐。身体健康,万事如意,心想事成,恭喜发财.
may_beyond 2011-02-09
  • 打赏
  • 举报
回复
data.responseText.x
孟子E章 2011-02-09
  • 打赏
  • 举报
回复
//获取ID
//查询数据放到list

你先把你的生成结果打印出来。
你的生成结果是错误的,
按照你贴的内容,结果已经是正确的了,你还不明白问题在吗?

你查询数据库,可能是有需要转移的字符导致的。比如内容存在"等需要进行转义的字符。
lilianjie0426 2011-02-09
  • 打赏
  • 举报
回复
怀疑是编码再搞鬼。。。
phil999 2011-02-08
  • 打赏
  • 举报
回复
还没解决?jq 要求双引号

{Id:"11",Name:"美国十六天游标准行程"}

-->

{"Id":"11","Name":"美国十六天游标准行程"}
xuStanly 2011-02-07
  • 打赏
  • 举报
回复
有中文,估计极有可能是编码问题.建议楼主看一下js页面的编码与编码声明是否一致,并且与服务器端ashx页面的返回编码一致.
weakey 2011-02-07
  • 打赏
  • 举报
回复
留脚印学习。
孟子E章 2011-02-07
  • 打赏
  • 举报
回复
你可以使用
<script src="jquery-1.5.min.js"></script>
测试
你可以查看测试的结果
http://dotnet.aspx.cc/Default5.aspx

另外注意路径、编码等问题

这个问题你节前的一段时间就问过啊
孟子E章 2011-02-07
  • 打赏
  • 举报
回复
VS2008测试是可以的啊

测试源代码
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

<script src="jquery-1.4.4.min.js"></script>

<script>
function f(v) {
$.getJSON(
"ho.ashx?id=" + v + "&" + Math.random(),
function(data) {
alert("aaa");
alert(data.x.length);
}
);
}
f("ok");
</script>

</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>


ho.ashx
<%@ WebHandler Language="C#" Class="ho" %>

using System;
using System.Web;

public class ho : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//context.Response.Charset = "utf-8";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("{\"x\":"
+ "["
+ "{\"Id\":\"11\",\"Name\":\"美国十六天游标准行程\"},"
+ "{\"Id\":\"12\",\"Name\":\"德法荷比卢奥瑞捷意梵十国十四日游\"},"
+ "{\"Id\":\"49\",\"Name\":\"英国瑞士八日游\"},"
+ "{\"Id\":\"50\",\"Name\":\"非凡泰新马升级版9晚11天\"}"
+ "]}");
context.Response.Write(sb.ToString());
context.Response.End();

}

public bool IsReusable
{
get
{
return false;
}
}

}
fabulous 2011-02-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 huangwenquan123 的回复:]
JScript code
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
url:"Handler.ashx",
type:"get",
data:"",
……
[/Quote]
我js是用的这样json的,不是ajax
function f(v) {
$.getJSON(
"ho.ashx?id=" + v + "&" + Math.random(),
function(data) {
alert("aaa");
alert(data.x.length);
}
);
}
fabulous 2011-02-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 net_lover 的回复:]
{"x":
[
{"Id":"11","Name":"美国十六天游标准行程"},
{"Id":"12","Name":"德法荷比卢奥瑞捷意梵十国十四日游"},
{"Id":"49","Name":"英国瑞士八日游"},
{"Id":"50","Name":"非凡泰新马升级版9晚11天"}
]
};
要求都必须用引号括起来
[/Quote]
我把x也用引号引起来了,但是还是不行。
Invalid JSON:
{"x":
[
{"Id":"11","Name":"美国十六天游标准行程"},
{"Id":"12","Name":"德法荷比卢奥瑞捷意梵十国十四日游"},
{"Id":"49","Name":"英国瑞士八日游"},
{"Id":"50","Name":"非凡泰新马升级版9晚11天"}
]
};
执行到try总会catch,data为undifined,但是parserError就是上面返回的数据。这样的话应该不是返回格式的问题吧。
if ( status === "success" ) {
// Watch for, and catch, XML document parse errors
try {
// process the data (runs the xml through httpData regardless of callback)
data = jQuery.httpData( xhr, s.dataType, s );
} catch( parserError ) {
status = "parsererror";
errMsg = parserError;
}
}
huangwenquan123 2011-02-06
  • 打赏
  • 举报
回复
 <script type="text/javascript">
$(document).ready(function(){
$.ajax({
url:"Handler.ashx",
type:"get",
data:"",
dataType:"json",
success:function(result){
$.each(result.x,function(i){
alert(result.x[i].Id+"--"+result.x[i].Name)
})
}
})
})
</script>

 public void ProcessRequest(HttpContext context) {
context.Response.ContentType = "text/plain";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("{x:"
+ "["
+ "{\"Id\":\"11\",\"Name\":\"美国十六天游标准行程\"},"
+ "{\"Id\":\"12\",\"Name\":\"德法荷比卢奥瑞捷意梵十国十四日游\"},"
+ "{\"Id\":\"49\",\"Name\":\"英国瑞士八日游\"},"
+ "{\"Id\":\"50\",\"Name\":\"非凡泰新马升级版9晚11天\"}"
+ "]}");
context.Response.Write(sb.ToString());
context.Response.End();
}
wuyq11 2011-02-05
  • 打赏
  • 举报
回复
孟子E章 2011-02-05
  • 打赏
  • 举报
回复
{"x":
[
{"Id":"11","Name":"美国十六天游标准行程"},
{"Id":"12","Name":"德法荷比卢奥瑞捷意梵十国十四日游"},
{"Id":"49","Name":"英国瑞士八日游"},
{"Id":"50","Name":"非凡泰新马升级版9晚11天"}
]
};
要求都必须用引号括起来
加载更多回复(7)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧