如何管理庞大的Ajax请求?

简介: 如何管理庞大的Ajax请求?

随着Ajax的流行,现在的项目使用Ajax已经很普遍了,可以说是大量的使用Ajax了。由于存在大量的Ajax请求,变得难于管理。于是我们经常统一请求,唯一页面或者唯一的入口。于是便有以下类似的代码:


public partial class Ajax : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string comm = Request["comm"];
            if ("editUserInfo".Equals(comm))
            {
                EditUserInfo();
            }
            else if ("addUserInfo".Equals(comm))
            {
                AddUserInfo();
            }
            ……
              else if ("deleteUserInfo".Equals(comm))
            {
               DeleteUserInfo();
            }
           Response.End();
        }
        public void EditUserInfo()
        {
           ……
         }
        ……
}

随着客户需求的变化、二期开发,也许有着更多的Ajax请求,这将制造了庞大的if…else if… … else if…,同时每个请求都有

相应的操作,这将造成这个类过于庞大,不利于管理、理解。


Factory模式正适用于这种场合。它使用一个类封装创建逻辑和客户代码的实例化/配置选项。UML图如下(用word画,不是很标准):


示例:

一、创建抽象类AjaxComm。

public abstract class AjaxComm
{
    public HttpRequest Request =HttpContext.Current.Request;
    public HttpResponse Response = HttpContext.Current.Response;
    public abstract void Execute();
}

二、Factory类,根据用户请求的Comm命令,创建相应的类,并执行相应的操作。

public partial class Ajax : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string comm = Request["comm"];
        //根据comm创建相应的类。类的命令规则:比如comm为“AddUser“,则相应的类名为“AddUserComm”
        AjaxComm ajaxComm = (AjaxComm)Assembly.Load("Web").CreateInstance("Web.Ajax." + comm+"Comm");
        if (ajaxComm != null)
        {
            ajaxComm.Execute();   
        }
        Response.End();
     }
}

三、实现相应的命令类。

public class EditImgComm:AjaxComm
{
    public override void Execute()
    {
        ……
        Response.Write("Success");
     }
}

                                        # 优点与缺点#                                                                      


 +合并创建逻辑和实例化/配置选项。                                                                                      


 +将客户代码与创建逻辑解耦。                                                                                              


 -如果可以直接实例化,会使设计复杂化。                                                                                


相关文章
|
5月前
|
JSON 前端开发 JavaScript
axios请求成功而$.ajax却不行排错
axios请求成功而$.ajax却不行排错
47 2
|
5月前
|
前端开发
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
|
1月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
34 10
React技术栈-react使用的Ajax请求库实战案例
|
4天前
|
JSON JavaScript 前端开发
Jquery常用操作汇总,dom操作,ajax请求
本文汇总了jQuery的一些常用操作,包括DOM元素的选择、添加、移除,表单操作,以及如何使用jQuery发送Ajax请求,涵盖了GET、POST请求和文件上传等常见场景。
|
1月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
24 7
React技术栈-react使用的Ajax请求库用户搜索案例
|
10天前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
17 4
|
3月前
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第3天】前端开发中的异步基石:AJAX与Fetch。AJAX,使用XMLHttpRequest,处理跨域、回调地狱和错误处理。Fetch,基于Promise,简化请求,但需注意默认无跨域头和HTTP错误处理。两者各有优劣,理解其问题与解决策略,能提升前端应用的性能和用户体验。
103 24
|
4月前
|
前端开发 Python
Django框架中Ajax GET与POST请求的实战应用
Django框架中Ajax GET与POST请求的实战应用
|
3月前
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第9天】JavaScript进阶:AJAX与Fetch API对比。AJAX用于异步数据交换,XMLHttpRequest API复杂,依赖回调。Fetch API是现代、基于Promise的解决方案,简化请求处理。示例:`fetch('url').then(r => r.json()).then(data => console.log(data)).catch(err => console.error(err))`。注意点包括检查HTTP状态、错误处理、CORS、Cookie和超时。Fetch提高了异步代码的可读性,但需留意潜在问题。
78 0
|
5月前
|
JSON 前端开发 JavaScript
Fetch API与Ajax请求
Fetch API是JavaScript的一种新方法,用于网络请求,提供简洁的Promise-based语法和更多功能,如处理头、取消请求及跨域支持,比Ajax更强大。尽管不完全替代Ajax,尤其在老浏览器或需要底层控制时,Fetch API仍是现代浏览器中获取资源的优选工具。例如,以下代码展示了如何使用Fetch API进行GET和POST请求。