<#def title = "AJAX"/> <#def keyword = "ZhiqimUI"/> <#def desc = " AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术"/> <#def prevUrl = "flexcopy.htm"/> <#def nextUrl = "drag.htm"/> ${zhiqim_com_header()} ${zhiqim_com_topnav("document")}
${zhiqim_com_ui("tutorial", "ui", "tool", "ajax")}
${zhiqim_com_breadcrumb("文库", "教程", "Ajax")}
<#-- 标题 -->

AJAX:

AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 知启蒙AJAX采用面向RMI的概念设计,通过指定类和方法,传入参数对应方法的参数,通过RMI访问JAVA类的方法获取执行结果。

<#-- 一、调用成功,回调函数(无参数的方法) -->
一、调用成功,回调函数(无参数的方法)
点我执行[doTestSuccess]函数
1、定义一个AJAX调用函数,设置类名或类别名、类方法和回调函数,然后执行
2、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
<#-- 二、调用成功,回调函数(带参数、使用类别名@AnAlias) -->
二、调用成功,回调函数(带参数、使用类别名@AnAlias)
点我执行[doTestParam]函数
1、定义一个AJAX调用函数,设置类类别名、类方法和回调函数
2、通过ajax.addParam();设置参数,参数个数和类型要和后端对应,支持字符串和基本类型 3、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
<#-- 三、调用成功,显示到元素中(无参数、使用类别名@AnAlias) -->
三、调用成功,显示到元素中(无参数、使用类别名@AnAlias)
点我执行[doTestSuccess]函数

返回内容:
1、定义一个AJAX调用函数,设置类名或类别名、类方法和回调函数,然后执行
2、在页面上设置点击执行函数,把结果放置到Z("#"+id)中
<#-- 四、调用成功,加载器,后端等待5秒(无参数、使用类别名@AnAlias) -->
四、调用成功,加载器,后端等待8秒(无参数、使用类别名@AnAlias)
点我执行[doTestLoading]函数

1、定义一个AJAX调用函数,设置类类别名、类方法和回调函数
2、通过ajax.setLoading(document, true);设置全屏加载器且遮罩,然后执行
3、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
<#-- 五、调用成功,指定加载器元素,后端等待5秒(无参数、使用类别名@AnAlias) -->
五、调用成功,指定加载器元素,后端等待8秒(无参数、使用类别名@AnAlias)
点我执行[doTestLoading2]函数

1、定义一个AJAX调用函数,设置类类别名、类方法和回调函数
2、通过ajax.setLoading("testLoading2");设置在testLoading2上显示加载器无遮罩,然后执行
3、如果需要遮罩层,设置为ajax.setLoading("testLoading2", true); 4、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
<#-- 六、调用成功,自定义加载器,后端等待5秒(无参数、使用类别名@AnAlias) -->
六、调用成功,自定义加载器,后端等待8秒(无参数、使用类别名@AnAlias)
点我执行[doTestLoading3]函数

1、定义一个AJAX调用函数,设置类类别名、类方法和回调函数
2、通过Z.loading()函数自定义加载器,然后通过ajax.setLoading();设置到Z.Ajax中
3、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
<#-- 七、调用失败(无参数、使用类别名@AnAlias) -->
七、调用失败(无参数、使用类别名@AnAlias)
点我执行[doTestError]函数
1、定义一个AJAX调用函数,设置类类别名、类方法和回调函数
2、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
<#-- 八、调用异常(无参数、使用类别名@AnAlias) -->
八、调用异常(无参数、使用类别名@AnAlias)
点我执行[doTestException]函数
1、定义一个AJAX调用函数,设置类类别名、类方法和回调函数
2、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
<#-- 九、拦截器,未通过显示未通过信息(无参数、使用类别名@AnAlias) -->
九、拦截器,未通过显示未通过信息(无参数、使用类别名@AnAlias)
点我执行[doTestInterceptor]函数
1、定义一个AJAX调用函数,设置类类别名、类方法和回调函数
2、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
3、拦截器由Java后端设置,如: @AnInterceptor("chkAjax1") public static void doTestInterceptor(HttpRequest request) { request.setResponseResult("返回成功信息"); } @AnAlias("chkAjax1") public class AjaxChk1Interceptor implements Interceptor { @Override public void intercept(HttpRequest request) throws Exception { request.setResponseError("拦截器不通过"); } }
<#-- 十、拦截器,未通过显示未通过信息(同步调用、无参数、使用类别名@AnAlias) -->
十、拦截器(同步调用、无参数、使用类别名@AnAlias)
点我执行[doTestSyncInterceptor]函数
1、定义一个AJAX调用函数,设置类类别名、类方法
2、通过ajax.setSync();设置表示设置成同步等待,同步调用时无需提供回调函数,直接在执行后读出结果即可
3、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
4、拦截器由Java后端设置,如: @AnInterceptor("chkAjax1") public static void doTestInterceptor(HttpRequest request) { request.setResponseResult("返回成功信息"); } @AnAlias("chkAjax1") public class AjaxChk1Interceptor implements Interceptor { @Override public void intercept(HttpRequest request) throws Exception { request.setResponseError("拦截器不通过"); } }
<#-- 十一、拦截器,未通过跳转到新页面(无参数、使用类别名@AnAlias) -->
十一、拦截器,未通过跳转到新页面(无参数、使用类别名@AnAlias)
点我执行[doTestInterceptor2]函数
1、定义一个AJAX调用函数,设置类类别名、类方法和回调函数
2、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
3、拦截器由Java后端设置,如: @AnInterceptor("chkAjax2") public static void doTestInterceptor2(HttpRequest request) { request.setResponseResult("返回成功信息"); } @AnAlias("chkAjax2") public class AjaxChk2Interceptor implements Interceptor { @Override public void intercept(HttpRequest request) throws Exception { request.setRedirectTop(request.getRootPath("/index.htm"), "拦截器要求,正地跳转到首页"); } }
<#-- 十二、拦截器,未通过跳转到新页面(同步调用、无参数、使用类别名@AnAlias) -->
十二、拦截器,未通过跳转到新页面(同步调用、无参数、使用类别名@AnAlias)
点我执行[doTestSyncInterceptor2]函数
1、定义一个AJAX调用函数,设置类类别名、类方法
2、通过ajax.setSync();设置表示设置成同步等待,同步调用时无需提供回调函数,直接在执行后读出结果即可
3、在页面上设置点击执行函数,通过设置callback回调得到responseStatus和responseText
4、拦截器由Java后端设置,如: @AnInterceptor("chkTutorialRedirect") public static void doTestInterceptor2(HttpRequest request) { request.setResponseResult("返回成功信息"); } @AnAlias("chkTutorialRedirect") public class AjaxChk2Interceptor implements Interceptor { @Override public void intercept(HttpRequest request) throws Exception { request.setRedirectTop(request.getRootPath("/index.htm"), "拦截器要求,正地跳转到首页"); } }
<#-- AJAX调用参数说明 -->
AJAX调用参数说明(请求参数十个,响应结果两个)
参数 说明
请求参数
contextPath 默认为空 当前上下文环境路径,如/admin,默认为空表示根上下文路径
className 必须 调用的类名或类别名,如ZuiPresenter/com.zhiqim.document.tutorial.ui.ZuiPresenter
methodName 必须 调用的类的方法名,如doTestInterceptor
async true 异常还是同步调用,默认异步,true|false
params [] 参数数组,可通过addParam();函数设置参数,如addParam("abc");
callback null 回调函数或回调elem的id
1、函数的this为Z.Ajax对象,可以通过this.responseStatus和this.responseText获取结果状态和结果文本
2、回调ID时,填写elem的id,即把this.responseText的值填充到elem中,有三种填充方式,见callbackMethod参数
callbackMethod "html" 回调ID时的方法,三种"html"|"text"|"val"
callScript true 是否在AJAX结果的改变重置由data-role的缓存,如Z.Tooltip,Z.Select等,true|false,默认true
loading null 三种加载器,通过方法setLoading();方法来设置
1、传入Z.loading对象,参数由对象指定,如ajax.setLoading(Z.loading({target: "testLoading3", shadow: true, position: 1})); 2、传入target和是否遮罩,如ajax.setLoading(document, true);或无遮罩ajax.setLoading(document); 3、传入targetId和是否遮罩,如ajax.setLoading("testLoading3", true);或无遮罩ajax.setLoading("testLoading3"); 4、传入一个函数,在加载时回调该函数,如ajax.setLoading(function(){});此方式用于自定义操作
loadingParam null 加载器参数,通过方法setLoading();方法来设置,是第二个参数
1、当loading是Z.loading和字符串时表示是否遮罩
2、当#ID时指定的HTML,成功后换回原始HTML
响应参数
responseStatus 0 响应状态,0表示成功,601-603表示跳转,其他表示错误
responseText null 响应文本字符串,默认是text/plain格式,XML或JSON格式自行转化
${zhiqim_com_chapter()}
${zhiqim_com_footer()}