我不确定我丢失了什么地方。
我正在构建一个ASP.NET 2.0(在.Net 3.5框架上)Web应用程序,并且包括一个Web服务。请注意,这 不是
MVC项目。我希望公开一个将返回JSON字符串的方法;格式化以提供给jqGrid jQuery插件。
这是我在服务中实现的初步测试方法:感谢(Phil
Haack的MVC指南
)
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getData()
{
JavaScriptSerializer ser = new JavaScriptSerializer();
var jsonData = new
{
total = 1, // we'll implement later
page = 1,
records = 3, // implement later
rows = new[]{
new {id = 1, cell = new[] {"1", "-7", "Is this a good question?", "yay"}},
new {id = 2, cell = new[] {"2", "15", "Is this a blatant ripoff?", "yay"}},
new {id = 3, cell = new[] {"3", "23", "Why is the sky blue?", "yay"}}
}
};
return ser.Serialize(jsonData); //products.ToString();
}
调用时将返回(为清楚起见而格式化):
<?xml version="1.0" encoding="utf-8" ?>
<string mlns="http://tempuri.org/">
{
"total":1,
"page":1,
"records":3,
"rows":
[
{"id":1,"cell":["1","-7","Is this a good question?","yay"]},
{"id":2,"cell":["2","15","Is this a blatant ripoff?","yay"]},
{"id":3,"cell":["3","23","Why is the sky blue?","yay"]}
]
}
</string>
没有 xml包装,如何实现以上响应?
您可能没有做的三件事:
可能有一种用GET调用方法的方法,我只用过POST。我能够使您的示例与此一起工作:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
// In your javascript block
$(document).ready(function()
{
$.ajax({
url: "/Default.aspx/Tester",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{}",
success: done
});
});
function done(data)
{
// Include http://www.json.org/json2.js if your browser doesn't support JSON natively
var data = JSON.parse(data.d);
alert(data.total);
}
</script>
背后的代码(您无需创建Web服务,可以将其放在default.aspx中):
[WebMethod]
public static string Tester()
{
JavaScriptSerializer ser = new JavaScriptSerializer();
var jsonData = new
{
total = 1, // we'll implement later
page = 1,
records = 3, // implement later
rows = new[]{
new {id = 1, cell = new[] {"1", "-7", "Is this a good question?", "yay"}},
new {id = 2, cell = new[] {"2", "15", "Is this a blatant ripoff?", "yay"}},
new {id = 3, cell = new[] {"3", "23", "Why is the sky blue?", "yay"}}
}
};
return ser.Serialize(jsonData); //products.ToString();
}
结果:
{"d":"{\"total\":1,\"page\":1,\"records\":3,\"rows\":[{\"id\":1,\"cell\":[\"1\",\"-7\",\"Is this a good question?\",\"yay\"]},{\"id\":2,\"cell\":[\"2\",\"15\",\"Is this a blatant ripoff?\",\"yay\"]},{\"id\":3,\"cell\":[\"3\",\"23\",\"Why is the sky blue?\",\"yay\"]}]}"}
更详细的解释在这里
问题内容: 我有一个应用程序,可以根据HTTP请求标头输出为JSON或XML。我可以通过将正确的标签添加到我正在使用的结构中来实现正确的输出,但是我不知道如何为JSON和XML指定标签。 例如,此序列化以更正XML: …这会生成正确的JSON: …但这不适用于任何一个: 问题答案: Go标签以空格分隔。从手册: 按照惯例,标签字符串是由空格分隔的键:“值”对的串联。每个键都是一个非空字符串,由非控
问题内容: 我有一个包含项的数组,我想做这样的事情: 但是,如果这样做,我会收到JSXTransformer错误: 相邻的XJS元素必须包装在一个封闭标签中 工作版本: 我尝试了这个。但是,使用封闭标签无法正常工作。 在这里回答: 未捕获的错误:始终违反:findComponentRoot(…,… $ 110):无法找到元素。这可能意味着DOM被意外地突变了 请告诉我如何正确包装一些TD标签! 我
问题内容: 我通过按下按钮来调用此函数… Firebug显示我得到了这个JSON响应(我知道这是有效的)[为清楚起见,被截断了] Firebug显示错误“无效标签 https://test.com/incident.do?JSON&callback=jsonp1279049933243&sysparm_action=getRecords 第1行 我怎样才能解决这个问题?谢谢! 问题答案: 您的响应
问题内容: 我正在为我的Web应用程序设计API。 我正在考虑仅支持JSON响应(不支持XML),因为它更加简化。 但是我刚刚碰到了这个XML: 我想知道对应的JSON会如何。我的感觉是,在这种情况下,XML会更紧凑。 问题答案: 也许: 因为XML和JSON之间 没有 确切的对应关系,所以您可以自由地(例如必须定义)这两个数据结构的映射方式。例如,在上面,“文件夹”元素隐含在“文件夹”数组中的嵌
问题内容: 这是我的问题的简化版本。 我有两个按钮和一个图像。图像代码是这样的 当我按下一个按钮时,我希望图像被包裹在一个A标签中,例如 当我按下另一个按钮时,应该删除A标签。 用jQuery做到这一点最简单的方法是什么? 问题答案: 您已经有很多答案,但是(至少在我开始撰写之前)它们都无法正常工作。 他们没有考虑到,你应该 不 换行与 多个标签。此外, 如果未 包装, 请勿 尝试拆开包装!您将销
问题内容: 标记对于HTML中的代码块以及编写脚本时调试输出非常有用,但是如何使文本自动换行而不是打印长行呢? 问题答案: 答案,来自此页面的CSS: