jquery ajax请求后台 的简单例子

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34107571/article/details/86600023

jQuery.ajax(url,[settings])

概述

通过 HTTP 请求加载远程数据。

jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。

最简单的情况下,$.ajax()可以不带任何参数直接使用。

注意,所有的选项都可以通过$.ajaxSetup()函数来全局设置。

回调函数

如果要处理$.ajax()得到的数据,则需要使用回调函数。beforeSend、error、dataFilter、success、complete。

  • beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。
  • error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
  • dataFilter 在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
  • success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
  • complete 当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。

demo如下:

前台js代码:

复制代码

var url = "/test/check";
    $.ajax({
        type: "post",
        url: url,
//      data: "para="+para,  此处data可以为 a=1&b=2类型的字符串 或 json数据。
        data: {"para":1},
        cache: false,
        async : false,
        dataType: "json",
        success: function (data ,textStatus, jqXHR)
        {
            if("true"==data.flag){
               alert("合法!");
                return true;
            }else{
                alert("不合法!错误信息如下:"+data.errorMsg);
                return false;
            }
        },
        error:function (XMLHttpRequest, textStatus, errorThrown) {      
            alert("请求失败!");
        }
     });

复制代码

后台java代码:

复制代码

/**
     * 校验
     *
     * @return void
     */
    public void check(){
        Map<String,String> result = new HashMap<String,String>();
        boolean flag = false;
        try{
            String para= getPara("para");
            //校验 代码...
            result.put("flag", "true");
            renderJson(result);//返回json数据
        }catch(Exception e){
            result.put("flag", flag+"");
            result.put("errorMsg", e.getMessage());
            renderJson(result);//返回json数据
            e.printStackTrace();
        }
    }

复制代码

展开阅读全文

Ajax请求后台处理

04-15

项目中需要用到一些Ajax来做一些异步的请求处理,主要是多级联动,后台的代码怎么写效率更高一些呢?rn后台框架SpringMVC+Hibernatern[code=Java]rn//web:rn//AjaxSelectRequestControllerrnpublic class AjaxSelectRequestControllerimplements Controllerrn private AjasSelectRequestService ajaxselectrequestservice;rn public void setAjaxselectrequestservicee(AjasSelectRequestService ajaxselectrequestservice) rn this.ajaxselectrequestservice = ajaxselectrequestservice;rn rn public ModelAndView handleRequest(HttpServletRequest request,rn HttpServletResponse response) throws Exception rn response.setContentType("text/xml");rn response.setHeader("Cache-Control", "no-cache");rn request.setCharacterEncoding("GBK");rn response.setCharacterEncoding("UTF-8");rn String type = request.getParameter("type");rn String id = request.getParameter("id");rn String xml_start = "";rn String xml = ajaxselectrequestservice.getXmlByTypeAndIDService(type, id);rn String xml_end = "";rn rn String last_xml = xml_start + xml + xml_end;rn response.getWriter().write(last_xml); rn return null;rn rnrn//servicern//方案一:rn//AjasSelectRequestServiceImplrnpublic AjasSelectRequestServiceImpl implements AjasSelectRequestService rn private AjaxSelectRequestDAO ajaxrequestdao;rn public String getXmlByTypeAndIDService(String type, String id)rn if(Strutils.isStringNotNull(type) && Strutils.isStringNotNull(id)) rn if("province".equals(type)) rn AjasSelectRequestServiceImplrnpublic AjasSelectRequestServiceImpl implements AjasSelectRequestService rn private AjaxSelectRequestDAO ajaxrequestdao;rn public String getXmlByTypeAndIDService(String type, String id)rn if(Strutils.isStringNotNull(type) && Strutils.isStringNotNull(id)) rn if("province".equals(type)) rn ajaxrequestdao...rn rn if("city".equals(type)) rn ajaxrequestdao ...rn rn if("area".equals(type)) rn ajaxrequestdao...rn rn if("school".equals(type)) rn ajaxrequestdao ...rn rn if("college".equals(type)) rn ajaxrequestdao...rn rn if("major".equals(type)) rn ajaxrequestdao...rn rn if("class".equals(type)) rn ajaxrequestdao...rn rn ...rn rn rnrn//方案二:rnAjasSelectRequestServiceImplrnpublic AjasSelectRequestServiceImpl implements AjasSelectRequestService rn private ProvinceManageDAO provincemanagedao;rn private CityManageDAO citymanagedao;rn private AreaManageDAO areamanagedao;rn private SchoolManageDAO schoolmanagedao;rn private CollegeManageDAO collegemanagedao;rn private MajorManageDAO majormanagedao;rn private ClassManageDAO classmanagedao;rn public String getXmlByTypeAndIDService(String type, String id)rn if(Strutils.isStringNotNull(type) && Strutils.isStringNotNull(id)) rn if("province".equals(type)) rn provincemanagedao ...rn rn if("city".equals(type)) rn citymanagedao...rn rn if("area".equals(type)) rn areamanagedao...rn rn if("school".equals(type)) rn schoolmanagedao...rn rn if("college".equals(type)) rn collegemanagedao...rn rn if("major".equals(type)) rn majormanagedao...rn rn if("class".equals(type)) rn classmanagedao...rn rn ...rn rn rn[/code]rn方案一用AjaxSelectRequestDAO为AjaxSelectRequestServiceImpl提供数据访问,并且实现了依据请求类型request和请求id对不同数据库表的访问,并返回对应的List;rn方案二用AjaxSelectRequestServiceImpl持有了各类请求的DAO数据库访问各自的一个对象,通过不同的对象为提供不同的数据库访问服务;rn个人的一些看法:rn方案一仅持有一个数据库访问层的访问对象,对于频繁的Ajax访问请求,处理时创建的对象少一些,至少创建的DAO引用少,但是他破坏了数据访问的底层完整性,也就是说,数据库不同类型的访问应有不同的DAO来处理rn方案二保持了数据库底层访问的访问完整性,但对于频繁Ajax处理,会力不从心,虽然Spring会做好持有对象的创建工作,可是对于仅仅一个Ajax请求,就创建了N多个DAO的引用,用完就被废弃,如果不及时垃圾回收,down掉都有可能rn彰显智慧火花,说出你的想法,大家共分享,齐进步~~~ 论坛

没有更多推荐了,返回首页