展会信息港展会大全

jquery ajax,ashx,json的用法介绍
来源:互联网   发布日期:2016-03-24 20:08:45   浏览:1947次  

导读:本篇文章主要是对jquery ajax,ashx,json的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助jquery提供的简化版的ajax调用方法通常如下:代...

本篇文章主要是对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;

}

}

}

}

赞助本站

人工智能实验室

相关热词: 开发 编程 android

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港