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 相关文章推荐
在IE下:float属性会影响offsetTop的取值
Dec 22 Javascript
js prototype 格式化数字 By shawl.qiu
Apr 02 Javascript
js 键盘记录实现(兼容FireFox和IE)
Feb 07 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
Oct 10 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
Oct 17 Javascript
详解Webwork中Action 调用的方法
Feb 02 Javascript
javascript实现粘贴qq截图功能(clipboardData)
May 29 Javascript
js中使用使用原型(prototype)定义方法的好处详解
Jul 04 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
使用 jQuery 实现表单验证功能
Jul 05 jQuery
Node.js  REPL (交互式解释器)实例详解
Aug 06 Javascript
从setTimeout看js函数执行过程
Dec 19 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/11/06 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
php实现简单的上传进度条
2015/11/17 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
JS中style属性
2006/10/11 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
javascript中的Function.prototye.bind
2015/06/25 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
python实现一个猜拳游戏
2020/04/05 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
《毛主席在花山》教学反思
2014/04/20 职场文书
读书活动总结
2014/04/28 职场文书
校园文化标语
2014/06/18 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
护理工作个人总结
2015/03/03 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
使用Python拟合函数曲线
2022/04/14 Python
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript