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检测网络是否具体连接功能的代码
May 23 Javascript
js+jquery常用知识点汇总
Mar 03 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
Aug 06 Javascript
jQuery拖动布局其结果保存到数据库
Oct 09 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
Oct 22 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
Nov 09 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
label+input实现按钮开关切换效果的实例
Aug 16 Javascript
JavaScript中call和apply方法的区别实例分析
Aug 03 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
Aug 22 Javascript
vue3.0搭配.net core实现文件上传组件
Oct 29 Javascript
vue浏览器返回监听的具体步骤
Feb 03 Vue.js
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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
详解Python中的__init__和__new__
2014/03/12 Python
Python 多线程实例详解
2017/03/25 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
实习护士自我鉴定
2013/10/13 职场文书
便利店的创业计划书
2014/01/15 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis