ashx文件是.net 2.0新加的文件类型(其实在.net 1.0下已经可用,但是没有公开提供).

ashx文件和aspx文件有什么不同? 我们先新建一个ashx文件看看:
 
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
public class Handler : IHttpHandler 
{        
  public void ProcessRequest (HttpContext context)

  {         
      context.Response.ContentType = "text/plain";         
      context.Response.Write("Hello World");    
  }     
  public bool IsReusable

  {        
    get

    {

      return false;

    }    
  }
}
看,比aspx简洁多了吧.只有一个文件,没有后台cs文件(基于代码安全考虑,后边我们会自己添加这个文件).ashx对比aspx文件,就好像少了cs文件.其实这就是ashx和aspx不同的地方,因为aspx要将前后台显示和处理逻辑分开,所以就弄成了两个文件,其实,在最终编译的时候,aspx和cs还是会编译到同一个类中去.这中间就要设计html的一些逻辑处理.而ashx不同,它只是简单的对web http请求的直接返回你想要返回的结果.比aspx少处理了html的过程.理论上,比aspx要快.

看看.net config文件中对两个文件类型请求的配置吧

<add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />
<add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />
可以看到两个文件处理的类不一样(ashx处理的类叫SimpleHandleFactory,既然叫Simple,应该处理过程也比较Simple.响应速度也应该快点吧:)

鼓捣完了你就大概明白了ashx不过.net里面自定义好的一个请求格式,ashx文件类的文件的处理过程要比aspx要简单得多.

不说这些东西了.说会怎么利用ashx文件来实现我们的AJAX请求吧(其实实现和JQuery和JSON关系不大)

看看JS代码:
 
function getSecondaryContent(menuId){    
  $.getJSON("Article/FreshNews.ashx", function(data) {        
    var txt = "<ul class=\"news\">";        
    $.each(data,function(i,n){            
      if(n.Url == "#")                 
          txt += "<li><a href=\"#\" οnclick=\"articleTitle_onclick('"+ n.ArticleId +"')\">"+ n.Title +"</a></li>";            
     else                 
         txt += "<li><a href=\""+ n.Url +"\" target=\"_blank\">"+ n.Title +"</a></li>";        
    });        
    txt += "</ul>";        
    $("#"+menuId).after(txt);    
});
}

和用其他文件没有差别吧?天下乌鸦一般黑!(汗~~~忽然冒出这个比喻.自己都觉得汗-_-||)

ashx文件如下:
<%@ WebHandler Language="C#" Class="FreshNews" %>
怎么样?是不是发觉少了点东西?和新建的文件不同了吧?呵呵,其实是我们将上边这句话以外的所有代码都放到App_Code里面了.
using System;
using System.Web;
public class FreshNews : IHttpHandler{    
  public void ProcessRequest(HttpContext context)

{         
      //context.Response.ContentType = "text/plain";         
      context.Response.ContentType = "application/json";         
      context.Response.Charset = "utf-8";         
      string txt = "[{\"Title\":\"学习使用AJAX技术\",\"Url\":\"#\",\"ArticleId\":\"Art1234\"},{\"Title\":\"使用JQuery构建网站

          \",\"Url\":\"#\",\"ArticleId\":\"Art1235\"},{\"Title\":\"使用JSON文件传输数据\",\"Url\":\"#\",\"ArticleId\":\"Art1236\"}]";         
      context.Response.Write(txt);    
  }    
 
  public bool IsReusable

{         
      get{return false;}    
  }
}
为什么要这样?因为MS说系统发布的时候ashx和asmx类型文件都是"生成程序集。原始文件保留在原位置,作为完成请求的占位符。",为了发布后不让人随便看到我们的代码,我们只有把代码移到App_Code里面了.不过,.net的反编译比什么都容易-_-|| 聊胜于无,心理安慰吧!

还有一个小插曲:因为我在web.config里面的设置是:

<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" responseHeaderEncoding="utf-8" />
就是因为JSON文件只支持Unicode编码,所以我就一狠心将所有编码都改成utf-8,想着这样做就一定没有错了.谁知道,js接收的数据中文死活是乱码,无论我怎么设置ContentType都是一样,差点没有把我气疯.

后来千辛万苦才想起好像这些编码和当前区域设置有关,续步尝试之下,发现只有将fileEncoding设置为"gb2312"才算正确获取到数据:
<globalization fileEncoding="gb2312" requestEncoding="utf-8" responseEncoding="utf-8" responseHeaderEncoding="utf-8" />
忘了顺便说一句:在ashx文件用使用Session必须实现 IRequiresSessionState 接口

转载于:https://www.cnblogs.com/Madream/articles/1700116.html

使用ashx文件响应来自JQuery的JSON请求相关推荐

  1. html设置json请求头,当我想在zf2客户端代码中使用“application/json”时,接受请求标头是“text/html,application/xhtm ...(etc)”...

    我有一个完全可用的API设置,并且zf2客户端I已经在理论上建立了工作,但无论如何,我似乎无法将来自客户端的JSON请求发送到API.每当我测试一下我不断收到以下标题而这又返回406错误:当我想在zf ...

  2. ashx 获取上传的文件_使用jQuery Post从.ashx获取文件

    这个问题来自我提出的另一个问题 - Passing client data to server to create Excel or CSV File. 我有一个客户端页面,它建立一个JSON对象发送 ...

  3. jquery访问ashx文件示例

    .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程.其实就是带HTML ...

  4. js html保存json,如何在json文件中存储jQuery或javascript变量?

    我可以知道有没有机会将jquery变量保存在json文件中?提前致谢.如何在json文件中存储jQuery或javascript变量? 我: var image='/test/test.png'; 我 ...

  5. ajax ashx session 为空,jquery ajax post 方式ashx文件取不到值。

    我的Common.js如下 //处理一般AJAX功能. function InvokeHander(url,type,data, onSuccess, onFailure) { $.ajax({ ur ...

  6. jquery ajax json文件,jQuery ajax读取本地json文件

    jQuery ajax读取本地json文件 json文件 { "first":[ {"name":"张三","sex": ...

  7. ajax ashx 请选择文件,jquery ajax post 方式ashx文件取不到值。

    我的Common.js如下 //处理一般AJAX功能. function InvokeHander(url,type,data, onSuccess, onFailure) { $.ajax({ ur ...

  8. 【Vegas原创】wordpress 从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页。此响应不是合法的JSON响应。解决方法。...

    两种报错方式: 1.此响应不是合法的JSON响应. 2.从服务器收到预料之外的响应.此文件可能已被成功上传.请检查媒体库或刷新本页. 情况:媒体服务器上传小文件没问题,大一点的文件报这个错误. 原因: ...

  9. ajax+php+jq+面向对象,php+jquery+ajax+json的一个最简单实例

    html页面: $(function(){ $("#send").click(function(){ var cont = $("input").seriali ...

最新文章

  1. Apache solr(二).
  2. boost::mpl::times相关的测试程序
  3. linux c之通过popen执行shell命令
  4. 早期访问中带有NetBeans的Oracle公共云Java服务
  5. CSDN公众号新功能上线,居然还能搜出小姐姐???(文末有福利)
  6. [导入]判断学号前十位的年龄最大的女学生是否是汉族的
  7. 必须声明标量变量 @sum_level。_ES6系列—新的变量声明方式
  8. 一起谈.NET技术,编写T4模板无法避免的两个话题:quot;Assembly Lockingquot;amp;quot;Debugquot;...
  9. c语言程序设计二级考试哪些题型,计算机二级考试题型及分值
  10. python基础——经营第一个项目,如何将python学得更6 ?
  11. OpenGL纹理操作--glGenTextures
  12. 组策略设置计算机计划任务,windows 2008 server 域环境通过组策略下发计划任务
  13. Android 音频系统:从 AudioTrack 到 AudioFlinger
  14. 土是独体字结构吗_独体结构的字大全
  15. 代谢组学助力研究“线粒体闪烁”,揭示细胞“返老还童”的新奥秘
  16. android 壁纸再拿,Android获取当前桌面壁纸
  17. windows 远程桌面无法连接的问题
  18. ASP.NET集成PayPal(使用IPN)
  19. 会声会影x4素材_会声会影素材包
  20. 微信小程序系列(6)如何用微信小程序写一个论坛?贴心代码详解(四)搜索页

热门文章

  1. java并发编程源码世界大师_求咕泡学院Java架构师第三期的完整版资料源码+视频,注(完整无解压密码)...
  2. 【认知计算】认知风险管理
  3. Ceph中一些PG相关的状态说明和基本概念说明、故障模拟
  4. 搜狐新闻如何玩?张朝阳演讲透露玄机
  5. HG Plugins 1.0 For JQuery
  6. python动图爱心表白_python 表白-爱心
  7. 河南省计算机专业三本排名2015,河南三本大学排名【最新排行榜】
  8. 【Error解决实录】win10设置默认浏览器闪退
  9. Python学习教程:数据类型—字符串大总结
  10. C. Basketball Exercise dp