jqueryajax,ashx,json的用法总结
jquery提供的简化版的ajax调用方法通常如下:
functionpost(){
$("#divWait").show();
$("#btnPost").attr("disabled","disabled");
$.post("../PostIt.ashx",
{
msgContent:$("#msgContent").val()
},
function(data){
if(data.indexOf("OK")>-1){
alert(data);
}
else{
}
$("#divWait").hide();
$("#btnPost").attr("disabled","");
});
}
在开发的时候,要接受json格式的返回值时,上面的方法貌似不能行,上面的方法貌似接受的是text的文本行。因此,采用jQuery的底层Ajax实现方法。
该方法参数也很多,具体可看帮助文档。本人的常规用法
functiondoPostAjax(){
$("#divWait").show();
$("#btnPost").attr("disabled","disabled");
$.ajax({
url:"../PostIt.ashx",
type:"POST",
dataType:"json",
data:{msgContent:$("#msgContent").val()},
timeout:60000,
error:function(XMLHttpRequest,textStatus,errorThrown){//请求错误时执行的方法
alert("error!"+errorThrown);
$("#divWait").hide();
$("#btnPost").attr("disabled","");
},
success:function(data,txtSataus){//请求成功时执行的方法
showContent(data.content,data.createdate);
$("#divWait").hide();
$("#btnPost").attr("disabled","");
}
});
}
在ashx代码段,要设置好返回的格式。
context.Response.ContentType="application/json";
如果是返回的html或者text的话可以如下写法
context.Response.ContentType="text/plain";
如果ajax方法中设置的返回值是json时,ashx代码返回的格式必须是json格式的数据。
把一个对象转换成json格式,常用方法就是采用开源的第三方类库json.net,Newtonsoft.Json.dll.
JsonConvert.SerializeObject方法就可以转换了。返回json格式后,jquery就可以采用XXX.xxx的方式获取值了。
JsonConvert在处理datetime格式的时候,会返回类似1198908717056的绝对值,因此,在处理datetime的时候,要做一下转换。具体语句如下:
IsoDateTimeConvertertimeConverter=newIsoDateTimeConverter();
//这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式
timeConverter.DateTimeFormat="yyyy"-"MM"-"dd""HH":"mm":"ss";
stringoutput=JsonConvert.SerializeObject(m,Newtonsoft.Json.Formatting.Indented,timeConverter);
此处顺便提一下,javascript对json格式的数据有着天生的处理能力,非常好的兼容json格式数据。
举个例子:
functionpppp(){
varperson={"name":"jack","age":24,"sex":true};
alert(person.name);
alert(person.age);
alert(person.sex);
}
这样的代码可以直接写出来,在vs2010的代码编辑器中还可以有代码提示。很强大。
ashx完整代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Threading;
usingNewtonsoft.Json;
usingNewtonsoft.Json.Converters;
namespacennn
{
///<summary>
///PostIt的摘要说明
///</summary>
publicclassPostIt:IHttpHandler
{
publicvoidProcessRequest(HttpContextcontext)
{
context.Response.ContentType="application/json";
try
{
stringmsgContent=context.Request["msgContent"]??"";
ModelContentm=newModelContent()
{
author="",
categoryid=-1,
title="",
content=msgContent,
datetime=DateTime.Now,
key="",
createdate=DateTime.Now,
lastmodifydate=DateTime.Now,
ip=context.Request.UserHostAddress
};
//BLLContentbll=newBLLContent();
//bll.Add(m);
IsoDateTimeConvertertimeConverter=newIsoDateTimeConverter();
//这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式
timeConverter.DateTimeFormat="yyyy"-"MM"-"dd""HH":"mm":"ss";
stringoutput=JsonConvert.SerializeObject(m,Newtonsoft.Json.Formatting.Indented,timeConverter);
context.Response.Write(output);
}
catch(Exceptionex)
{
context.Response.Write(ex.Message);
}
}
publicboolIsReusable
{
get
{
returnfalse;
}
}
}
}
相关文章
- 【说站】Python字典和json的比较
- 【100个 Unity实用技能】| Unity读取本地文件(Json,txt等)的三种方法示例
- java中list对象和json字符串互转
- 用FastJson将JSON字符串转Json[通俗易懂]
- 如何在Lua中使用json
- golang实现类似PHP json_encode和json_decode 函数
- 18.6K Star!这款 JSON 数据可视化工具太优雅了!
- jQuery创建json对象
- PHP json_decode 无法解析,那就试试 Services_JSON
- Json解析注解 [email protected]编程语言
- MySQL存储实现JSON格式的处理(mysql存json)
- json深入MySQL:将数据导入@JSON格式(mysqlinto)
- MySQL存储JSON格式的数据(mysql存json格式)
- 中处理json使用Linux脚本处理JSON格式数据(在linux脚本)
- 把JSON 格式数据存入MySQL(mysql存入json)
- Linux 优雅解析JSON文件(linux解析json)
- 从JSON中读取数据存入MySQL数据库(json存入mysql)
- 破解Oracle数据库之路从JSON到Oracle的导入(json导入oracle)
- Redis实现高效存储JSON集合(redis集合json)
- 让Json更懂中文(JSON_UNESCAPED_UNICODE)
- c#和Javascript操作同一json对象的实现代码
- javascript进阶篇3Ajax、JSON、Prototype介绍
- JSON为什么那样红为什么要用json(另有洞天)
- JS保存、读取、换行、转Json报错处理方法
- JQuery获取json数据$.getJSON方法的实例代码
- jQuery.parseJSON(json)将JSON字符串转换成js对象