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 相关文章推荐
Javascript 面向对象 继承
May 13 Javascript
可在线编辑网页文字效果代码(单击)
Mar 02 Javascript
jquery indexOf使用方法
Aug 19 Javascript
jQuery中outerWidth()方法用法实例
Jan 19 Javascript
实用又漂亮的BootstrapValidator表单验证插件
May 30 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
Jun 12 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
Nov 08 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
Sep 01 Javascript
d3.js实现图形拖拽
Dec 19 Javascript
JS的时间格式化和时间戳转换函数示例详解
Jul 27 Javascript
js实现手表表盘时钟与圆周运动
Sep 18 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 信息采集程序代码
2009/03/17 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
全面了解python字符串和字典
2016/07/07 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
NumPy排序的实现
2020/01/21 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
什么是Assembly(程序集)
2014/09/14 面试题
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
自我推荐信怎么写
2015/03/24 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
初中语文教师研修日志
2015/11/13 职场文书
python实现的web监控系统
2021/04/27 Python
十个Python自动化常用操作,即拿即用
2021/05/10 Python
Redis 常见使用场景
2021/08/30 Redis