直接贴代码!我也测试通过! 一切看注释! 谢谢!
Handler.ashx<%@ WebHandler Language="C#" Class="Handler" %> using System; using System.Web; using System.Text; public class Handler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; string id = "0"; //判断提交方式 if (context.Request.RequestType.ToLower() == "get") { id = context.Request.QueryString["id"]; } else { id = context.Request.Form["id"]; } string name = @"jinho's good \"" you"; /** * 今天暂时用手动创建个json字符串类型,其实.net中有 * System.Runtime.Serialization.Json.DataContractJsonSerializer这个类来把 * 实体对象转换为json字符串! 改天再用那种方式写个吧! * 自己也学习学习[更多关于json介绍!google一下多了是] * */ StringBuilder sb = new StringBuilder("{"); sb.Append("id:"+id); /* * 注意但属性值为字符串的时候需要有'号或者"号['字符串'] * 当 参数 name 又含 有单引号或者双引号 就会出错了![截断了字符串] * 在这里sb.Append(",name:'escape(" + name + ")'"); 用js的escape也不行 * context.Server.HtmlEncode();,context.Server.UrlEncode();也不行 * 可以看看这里 * escape("'") = %27 可以在js用 unescape("'") 就还原了 * escape(""") = %22 嘿嘿,用这个方法也是我的无奈之举! * 谁有好的方法记得告诉我哦! 先谢谢了! * 问题已解决:http://www.cnblogs.com/jinho/archive/2010/05/07/1729586.html * */ sb.Append(",name:'" + name.Replace("'", "%27").Replace("\"", "%22") + "'"); sb.Append(",age:22"); sb.Append("}"); //输出 json 字符串 context.Response.Write(sb.ToString()); context.Response.End(); } public bool IsReusable { get { return false; } } }
Default.aspx<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>前台</title> </head> <body> <form id="form1" runat="server"> <asp:scriptmanager runat="server" ID="sm" /> <script type="text/javascript"> function ajaxFunction() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp = new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("您的浏览器不支持AJAX!"); return false; } } } return xmlHttp; } </script> <script type="text/javascript"> var xmlhttp = null; function loadJsonData() { xmlhttp = ajaxFunction(); if (xmlhttp != null) { xmlhttp.onreadystatechange = state_Change; var data = "id=231"; //把这两句注释,看看下面的POST提交方式 xmlhttp.open("GET", "Handler.ashx?" + data, true); xmlhttp.send(null); /* xmlhttp.open("POST", "Handler.ashx", true); //如果使用POST提交 不设置这条语句,url页面 Request.Form["key"] 是取不到值的! //这句我也不知道为什么要设置,网上找到的![GET提交可以不设置,但需要把参数拼接到URL] xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttp.send(data); //如果是post提交,需要把数据发送过去 */ } else { alert("Your browser does not support XMLHTTP."); } } function state_Change() { if (xmlhttp.readyState == 4) {// 4 = "loaded" if (xmlhttp.status == 200) {// 200 = "OK" eval("var s = " + xmlhttp.responseText); $get("divDisplay").innerHTML = "ID" + s.id + "Name:" + unescape(s.name) + "Age:" + s.age; } else { alert("Error:" + xmlhttp.statusText); } } } </script> <div> <input type="button" value="GetJson" onclick="loadJsonData();" /> <div id="divDisplay"></div> </div> </form> </body> </html>
更多详情:asp.net 数据类型 转换 成 JSON 格式
记录学习点滴...,坚持每天让自己的技能增加1%,默默的坚持下去吧!:-)