jquery ajax,ashx,json的用法总结


Posted in Javascript onFebruary 12, 2014

jquery提供的简化版的ajax调用方法通常如下:

    function post() { 
    $("#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实现方法。

该方法参数也很多,具体可看帮助文档。本人的常规用法

    function doPostAjax(){ 
            $("#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的时候,要做一下转换。具体语句如下:

IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();          
//这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式           
timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
string output = JsonConvert.SerializeObject(m, Newtonsoft.Json.Formatting.Indented, timeConverter);

此处顺便提一下,javascript对json格式的数据有着天生的处理能力,非常好的兼容json格式数据。

举个例子:

    function pppp() { 
           var person = { "name": "jack", "age": 24,"sex": true }; 
           alert(person.name); 
           alert(person.age); 
           alert(person.sex); 
           }

这样的代码可以直接写出来,在vs2010的代码编辑器中还可以有代码提示。很强大。

ashx完整代码如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Threading; 
using Newtonsoft.Json; 
using Newtonsoft.Json.Converters;
    namespace nnn
{ 
    /// <summary> 
    /// PostIt 的摘要说明 
    /// </summary> 
    public class PostIt : IHttpHandler 
    {
            public void ProcessRequest(HttpContext context) 
        { 
            context.Response.ContentType = "application/json"; 
            try 
            { 
                string msgContent = context.Request["msgContent"] ?? ""; 
                ModelContent m = new ModelContent() 
                { 
                    author = "", 
                    categoryid = -1, 
                    title = "", 
                    content = msgContent, 
                    datetime = DateTime.Now, 
                    key = "", 
                    createdate = DateTime.Now, 
                    lastmodifydate = DateTime.Now, 
                    ip = context.Request.UserHostAddress
                    };
                    //BLLContent bll = new BLLContent(); 
                //bll.Add(m);
                    IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();          
                //这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式           
                timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"; 
                string output = JsonConvert.SerializeObject(m, Newtonsoft.Json.Formatting.Indented, timeConverter); 
                context.Response.Write(output); 
            } 
            catch (Exception ex) 
            { 
                context.Response.Write(ex.Message); 
            }
            }
            public bool IsReusable 
        { 
            get 
            { 
                return false; 
            } 
        } 
    } 
}
Javascript 相关文章推荐
解决FLASH需要点击激活的代码
Dec 20 Javascript
通用javascript脚本函数库 方便开发
Oct 13 Javascript
详解JavaScript中的blink()方法的使用
Jun 08 Javascript
分享网页检测摇一摇实例代码
Jan 14 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
Nov 07 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
Apr 10 Javascript
vue中render函数的使用详解
Oct 12 Javascript
JS学习笔记之数组去重实现方法小结
May 29 Javascript
js实现弹窗效果
Aug 09 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
Nov 04 Javascript
vue组件中传值EventBus的使用及注意事项说明
Nov 16 Javascript
Jquery中ajax方法data参数的用法小结
Feb 12 #Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
Feb 12 #Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 #Javascript
JavaScript cookie的设置获取删除详解
Feb 11 #Javascript
JavaScript新窗口与子窗口传值详解
Feb 11 #Javascript
jquery绑定事件不生效的解决方法
Feb 11 #Javascript
JS将制定内容复制到剪切板示例代码
Feb 11 #Javascript
You might like
PHP 强制下载文件代码
2010/10/24 PHP
php7下的filesize函数
2019/09/30 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
Python实现多线程下载文件的代码实例
2014/06/01 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
python实现静态web服务器
2019/09/03 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
毕业生的自我评价
2013/12/30 职场文书
创业融资计划书
2014/04/25 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
2015年大学生工作总结
2015/04/21 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
Python之matplotlib绘制饼图
2022/04/13 Python
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers