jquery ajax,ashx,json的用法总结

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;
            }
        }
    }
}

(0)

相关推荐

  • jQuery getJSON()+.ashx 实现分页(改进版)

    参考了:http://www.jb51.net/article/35110.htm改进的地方: 1.ashx返回json数据,减少传输数据量,html页面样式控制也比较灵活: 2.改写html页的jQuery代码: 3.把3个ashx文件简化为1个. 一.创建表的测试数据: 复制代码 代码如下: create table test(id int identity,title varchar(36)) declare @index int; set @index = 1; while(@index

  • asp.net中js和jquery调用ashx的不同方法分享

    =============js================ 复制代码 代码如下: var xhr = new XMLHttpRequest();            xhr.open("get", 'Controls/gengCart.ashx?CartID=' + input + '&count=' + inp, true);            xhr.setRequestHeader("If-Modified-Since", "0&q

  • Chrome内核下由ashx输出的js代码不起作用的解决方法

    复制代码 代码如下: public class Script    {       public static void Alert(string message)        {            ResponseScript("    alert('" + message + "');");        } public static void ResponseScript(string script)        {            HttpC

  • ASP.net与SQLite数据库通过js和ashx交互(连接和操作)

    ASP.net与SQLite数据库通过js和ashx交互(连接和操作): 废话(也是思路):用的是VS2010,打算做网站前后台.由于不喜欢前台语言里加些与html和css和js的其他内容,想实现前后台语言的分离,与前后台通过js的ajax实现交互,故很多百度出来的方法不成立,虽听说ashx过时,但是他实现了我要的效果:即前后台语言不是相互嵌入实现交互,而是通过js实现(有接口就可以). 由于领导指定用SQLite,故这两天还折腾了SQLite,不过对于这种小型的网站,它是个很好的选择(不需要部

  • 在一般处理程序(ashx)中弹出js提示语

    在提交form表单时,比如前台是$("form").submit()同步提交的时候,这个是没有回掉函数的,那么我们只能在后台提示,在前台显示,自己作为一个参考吧 public class Script { public static void Alert(string message) { ResponseScript("alert('" + message + "');window.location = '弹出提示语后,点击确认跳到你想跳的页面';&qu

  • jquery ajax,ashx,json的用法总结

    jquery提供的简化版的ajax调用方法通常如下: 复制代码 代码如下: function post() {     $("#divWait").show();     $("#btnPost").attr("disabled", "disabled");     $.post("../PostIt.ashx",                     {                        

  • jQuery+ajax读取json数据并按照价格排序示例

    本文实例讲述了jQuery+ajax读取json数据并按照价格排序.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="jquery-1.9.1.js"></script> <script> $.ajax({ url

  • JQuery ajax 返回json时出现中文乱码该如何解决

    使用jQuery ajax调用的返回json,中文乱码问题 Js代码如下: $.ajax({ url: '/test/testAction.do?method=test', type: 'POST', dataType: 'json', timeout: 5000, async: false, error: function(){ alert('获取数据失败!'); }, success: function(json){ jsObject = eval(json); } }); return j

  • Jquery Ajax.ashx 高效分页实现代码

    以前的我,用惯了 UpdatePanel UpdateProgress 等控件,甚至到了滥用的程度,只是一味的追求无刷新,一边弄这 loading 图片 提示,这样貌似更美观,但是 感觉 更损失了性能, 而且有时候还破坏了网站的完整性. 但是学了Jquery之后,了解了 Jquery.ajax ,Jquery.get 等方法,从而学会了使用 webservice 和.ashx 文件,来与服务器交互. 这次的Jquery分页 是与 .ashx文件配合的. 建立三个.ashx,分别为PreviewH

  • JQuery ajax返回JSON时的处理方式 (三种方式)

    最近在使用JQuery的ajax方法时,要求返回的数据为json数据,在处理的过程中遇到下面的几个问题,那就是采用不同的方式来生成json数据的时候,在$.ajax方法中应该是如何来处理的,下面依次来进行说明,由于本人使用的是asp.net,所以处理的页面都是采用.net来做的!其他的方式应该是相同的吧 一.JSON的一些基础知识. JSON中对象通过"{}"来标识,一个"{}"代表一个对象,如{"AreaId":"123"}

  • js jquery ajax的几种用法总结(及优缺点介绍)

    这篇文章,是我不知道什么是ajax到熟练运用ajax的一个历程. 一,最原始的方式来运用ajax 复制代码 代码如下: <SCRIPT language=javascript>var xmlHttp; function createXMLHttpRequest() { if (window.ActiveXObject) {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}else if (window.XMLHttpRequ

  • jQuery ajax json 数据的遍历代码

    先给大家说下我的需求:进行ajax请求后,后台传递回来以下json数据. 具体实现代码如下所示: JavaScript代码 { "data":[ {"id":"1","name":"选择A","value":"A"}, {"id":"2","name":"选择B","value&

  • jQuery Ajax前后端使用JSON进行交互示例

    需求: 前端通过jQuery Ajax传输json到后端,后端接收json,对json进行处理,后端返回一个json给前端 这里使用servlet的方式 1.采用$.post方法 index.jsp页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <%

  • jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析

    本文实例讲述了jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="h

  • jQuery使用ajax传递json对象到服务端及contentType的用法示例

    本文实例讲述了jQuery使用ajax传递json对象到服务端及contentType的用法.分享给大家供大家参考,具体如下: 0.一般情况下,通过键值对的方式将参数传递到服务端 0.1 客户端代码: $.ajax({ url: 'TestHandler.ashx', type: 'post', data: { name: "admin", age: 10 }, dataType: 'text', success: function (data) { alert(data); } })

随机推荐