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 相关文章推荐
js不是基础的基础
Dec 24 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
Feb 11 Javascript
jQuery获取注册信息并提示实现代码
Apr 21 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
Jun 29 Javascript
鼠标移到图片上变大显示而不是放大镜效果
Jun 15 Javascript
果断收藏9个Javascript代码高亮脚本
Jan 06 Javascript
开启BootStrap学习之旅
May 04 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
Oct 08 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
Jan 10 Javascript
vue.js中实现登录控制的方法示例
Apr 23 Javascript
又拍云 Node.js 实现文件上传、删除功能
Oct 28 Javascript
vue使用Font Awesome的方法步骤
Feb 26 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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
PHP提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
Python实现LRU算法的2种方法
2015/06/24 Python
Python三级菜单的实例
2017/09/13 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
自主招生自荐信格式
2013/12/03 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
公司员工安全协议书
2014/11/21 职场文书
车间主任岗位职责
2015/02/03 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
python3操作redis实现List列表实例
2021/08/04 Python