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 相关文章推荐
jQuery 使用手册(三)
Sep 23 Javascript
Javascript实现简单的富文本编辑器附演示
Jun 16 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
Jun 24 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
JavaScript实现数据类型的相互转换
Mar 06 Javascript
jQuery.Callbacks()回调函数队列用法详解
Jun 14 Javascript
Vue2.0权限树组件实现代码
Aug 29 Javascript
一文快速了解JQuery中的AJAX
May 31 jQuery
发布订阅模式在vue中的实际运用实例详解
Jun 09 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
Jul 29 Javascript
JavaScript Dom 绑定事件操作实例详解
Oct 02 Javascript
vue keep-alive 动态删除组件缓存的例子
Nov 04 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根据身份证号码计算年龄的实例代码
2014/01/18 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
filemanage功能中用到的lib.js
2007/04/08 Javascript
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
javascript 产生随机数的几种方法总结
2017/09/26 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
Python实现简单http服务器
2018/04/12 Python
django ajax json的实例代码
2018/05/29 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
python 实现目录复制的三种小结
2019/12/04 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
python多进程并发demo实例解析
2019/12/13 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
工程现场管理求职自荐信
2013/10/02 职场文书
行政介绍信范文
2015/05/04 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis