jquery ajax,ashx,json的用法总结

分手后的思念是犯贱 2022-08-22 03:52 250阅读 0赞

jquery提供的简化版的ajax调用方法通常如下:

复制代码代码如下:

  1. function post() \{
  2. $("\#divWait").show();
  3. $("\#btnPost").attr("disabled", "disabled");
  4. $.post("../PostIt.ashx",
  5. \{
  6. msgContent: $("\#msgContent").val()
  7. \},
  8. function (data) \{
  9. if (data.indexOf('OK') > -1) \{
  10. alert(data);
  11. \}
  12. else \{
  13. \}
  14. $("\#divWait").hide();
  15. $("\#btnPost").attr("disabled", "");
  16. \});

}

在开发的时候,要接受json格式的返回值时,上面的方法貌似不能行,上面的方法貌似接受的是text的文本行。因此,采用jQuery的底层Ajax实现方法。

该方法参数也很多,具体可看帮助文档。本人的常规用法

复制代码代码如下:

  1. function doPostAjax()\{
  2. $("\#divWait").show();
  3. $("\#btnPost").attr("disabled", "disabled");
  4. $.ajax(\{
  5. url: '../PostIt.ashx',
  6. type: 'POST',
  7. dataType: 'json',
  8. data: \{ msgContent: $("\#msgContent").val() \},
  9. timeout: 60000,
  10. error: function (XMLHttpRequest, textStatus, errorThrown) \{//请求错误 时执行的方法
  11. alert("error!" + errorThrown);
  12. $("\#divWait").hide();
  13. $("\#btnPost").attr("disabled", "");
  14. \},
  15. success: function (data, txtSataus) \{//请求成功时执行的方法
  16. showContent(data.content, data.createdate);
  17. $("\#divWait").hide();
  18. $("\#btnPost").attr("disabled", "");
  19. \}
  20. \});
  21. \}

在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格式数据。

举个例子:

复制代码代码如下:

  1. function pppp() \{
  2. var person = \{ "name": "jack", "age": 24,"sex": true \};
  3. alert(person.name);
  4. alert(person.age);
  5. alert(person.sex);
  6. \}

这样的代码可以直接写出来,在vs2010的代码编辑器中还可以有代码提示。很强大。

ashx完整代码如下:

复制代码代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Threading;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

  1. namespace nnn

{
///


/// PostIt 的摘要说明
///

public class PostIt : IHttpHandler
{

  1. public void ProcessRequest(HttpContext context)
  2. \{
  3. context.Response.ContentType = "application/json";
  4. try
  5. \{
  6. string msgContent = context.Request\["msgContent"\] ?? "";
  7. ModelContent m = new ModelContent()
  8. \{
  9. author = "",
  10. categoryid = -1,
  11. title = "",
  12. content = msgContent,
  13. datetime = DateTime.Now,
  14. key = "",
  15. createdate = DateTime.Now,
  16. lastmodifydate = DateTime.Now,
  17. ip = context.Request.UserHostAddress
  18. \};
  19. //BLLContent bll = new BLLContent();
  20. //bll.Add(m);
  21. IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();
  22. //这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式
  23. timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
  24. string output = JsonConvert.SerializeObject(m, Newtonsoft.Json.Formatting.Indented, timeConverter);
  25. context.Response.Write(output);
  26. \}
  27. catch (Exception ex)
  28. \{
  29. context.Response.Write(ex.Message);
  30. \}
  31. \}
  32. public bool IsReusable
  33. \{
  34. get
  35. \{
  36. return false;
  37. \}
  38. \}
  39. \}

}

发表评论

表情:
评论列表 (有 0 条评论,250人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Dtree用法总结

    最近用到了dtree来建立树,纠结过好久后,终于有了些门道,下面的总结希望对咪咪们有些帮助: dtree用来建立静态树或者动态树都是很方便的,老外给提供了整个的JS,然后我

    相关 ping用法总结

    问题1:A设备ping不通B设备; 但是笔记本能ping通B设备,且在笔记本ping完B设备后,A设备也能ping通B设备了。 问题2:A设备ping不通B设备,但是B设备