AJAX提交到Handler.ashx一般处理程序返回json数据 (字符串拼接方式)
<%@ 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 = "";
//判断提交方式
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;
}
} }
<%@ 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 = "loaded"
if (xmlhttp.status == ) {// 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>
AJAX提交到Handler.ashx一般处理程序返回json数据 (字符串拼接方式)的更多相关文章
- AJAX提交到Handler.ashx一般处理程序返回json数据-转
直接贴代码!我也测试通过! 一切看注释! 谢谢! <%@ WebHandler Language="C#" class="Handler" %> u ...
- 前台返回json数据的常用方式+常用的AJAX请求后台数据方式
我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
1:跨域请求handler一般处理程序 using System; using System.Collections.Generic; using System.Web; using System.W ...
- 用jQuery的ajax请求一般处理程序返回json数据
1.web页面代码: 注意事项: dataType类型一定要写成json. 2.一般处理程序代码: 注意事项: ContentType类型写成"application/json"或 ...
- ashx将datatable返回json数据
1.直接使用JsonConvert.SerializeObject().将datatable放入 输出字符串 下面是测试:用webform+ashx作为接口. public class GetJso ...
- ajax请求、servlet返回json数据
ajax请求.servlet返回json数据 1.方式一 response.setcontenttype("text/html;charset=utf-8"); response. ...
- JavaWeb 返回json数据的两种方式
1.说明 由于一般情况下,由浏览器(前端)发送请求,服务器(后台)响应json数据,所以这里结合js进行说明: A服务器发送请求至B服务器,并接收其返回的json数据,见文末推荐,这里不再赘述! 2. ...
- ashx文件结合ajax使用(返回json数据)
ashx文件返回json数据: public void ProcessRequest(HttpContext context) { context.Response.ContentType = &qu ...
- jquery序列化from表单使用ajax提交返回json数据(使用struts2注解result type = json)
1.action类引入struts2的"json-default"拦截器栈 @ParentPackage("json-default") //示例 @Paren ...
随机推荐
- uva 101 by sixleaves
这是一道很好的模拟题,用vector<int> p[maxn],建立模型,映射为maxn个堆.主要要掌握vector模拟堆操作的简单方法.接下来得思路是自顶向下的方式,逐步完善程序.首先根 ...
- Java Service Wrapper
Java Service Wrapper 将Java 应用程序部署成Windows系统服务Java Service Wrapper 1 Product Overview 1 Editions 2 Me ...
- Impala 3、Impala、Hbase整合
Impala可以通过Hive外部表方式和HBase进行整合,步骤如下: • 步骤1:创建hbase 表,向表中添加数据 create 'test_info', 'info' put 'test_inf ...
- Python的字符串与数字
Python3.0通过“input”实现读取控制台的输入与用户实现交互.值得注意的是input接受的所有数据都是字符串,即使输入的是数字,依然会被当作字符串来处理.这就会出现一些问题,所以需要进行类型 ...
- c语言的lua库编写
gcc编译 gcc -I/usr/local/include/ -L/usr/local/lib/ -lm -o engine_mlisten_lua ./src/engine_mlisten_lua ...
- 虚拟化之KVM virsh常用命令篇
1,查看运行的虚拟机 virsh list 2,查看所有的虚拟机(关闭和运行的虚拟机) virsh list --all 3,连接虚拟机 virsh console +域名(虚拟机的名称) 4,退出虚 ...
- win7系统64位plsql的设置
1. Instant Client Downloads for Microsoft Windows (32-bit) 我下载的是: instantclient-basic-win32-11.2.0.1 ...
- c#datagrid的每行的单击事件
需要一个帮助类 using System; using System.Net; using System.Windows; using System.Windows.Controls; using S ...
- 学php之翻译wordpress(1)
单看文件结构,wordpress分了3个文件夹 wp-admin,wp-content,wp-includes 和零散的一堆php,暂时不清楚各自的分工 入口文件是index.php <?php ...
- sublime工具 插件自动补全方法
自动补全(emmet),输入对应的关键字(html标签)---tab键 http://www.emmet.io/ 代码片段 只需要输入自己的关键字--tab键 操作: 添加代码片段,然后保存 保存 使 ...