ColdFusion & jQuery 异步服务代理
2011-11-28 10:01
309 查看
ColdFusion cfmproxy.cfm 代码:
客户端 jQuery 代码:
/** * @hint 返回 ajax 提交的请求对象 * @returntype any */ function getAjaxRequest() { var content = getRequestContent(); if (content == "" && IsDefined("URL.p")) { content = URL.p; } if (IsJSON(content)) { return DeserializeJSON(content); } else { return ""; } }
/** * @hint 返回页面的请求内容 * @returntype string */ function getRequestContent() { var result = ""; var httpRequest = GetPageContext().getRequest(); var contentLength = httpRequest.getContentLength(); if (contentLength GT 0) { byteArray = getByteArray(contentLength); httpRequest.getInputStream().readLine(byteArray, 0, contentLength); result = ToString(createObject("java", "java.lang.String").init(byteArray)); } return result; }
<cfprocessingdirective pageencoding="utf-8" />
<cftry> <cfscript> cfmResult = {}; cfmResult.success = false; cfmInfo = $Utils.getAjaxRequest(); </cfscript> <cfif IsStruct(cfmInfo) And StructKeyExists(cfmInfo, "cfmpage") And StructKeyExists(cfmInfo, "method")> <cfinclude template="#cfmInfo.cfmpage#"/> <cfscript> if (StructKeyExists(Variables, cfmInfo.method)) { method = Variables[cfmInfo.method]; if (IsDefined("cfmInfo.arguments")) { cfmResult.data = method(argumentCollection = cfmInfo.arguments); } else { cfmResult.data = method(); } cfmResult.success = true; } else { cfmResult.data = "请求的方法不存在"; } </cfscript> <cfelse> <cfset cfmResult.data = "请求格式错误"> </cfif> <cfcatch type="any"> <cfset cfmResult.data = cfcatch.Message /> <cfif _$ReturnExceptionDetail{1}gt; <cfset cfmResult.Exception = cfcatch> </cfif> </cfcatch> </cftry> <cfcontent type="application/json; charset=utf-8"/> <cfoutput>#SerializeJSON(cfmResult)#</cfoutput>
客户端 jQuery 代码:
_postCFProxy: function (request) { var dtd = jQuery.Deferred(); jQuery.ajax({ type: "POST", url: request.url, contentType: "application/json", data: jQuery.toJSON(request) }) .done(function (data, textStatus, jqXHR) { if (data.SUCCESS) { dtd.resolve(data.DATA); } else { dtd.reject(data); } }) .fail(function (jqXHR, textStatus, errorThrown) { dtd.reject({ DATA: jqXHR.responseText }, jqXHR); }); return dtd.promise(); }, _callcfm: function (cfm, method, params) { var cfminfo = { url: "cfmproxy.cfm", cfmpage: cfm, method: method }; if (params) { cfminfo.arguments = params; } return this._postCFProxy(cfminfo); }
相关文章推荐
- <JQuery>双击编辑异步更新
- sql server提供的代理服务无…
- jQuery树形菜单,使用zTree插件,异步加载 & 编辑功能&Check 共存
- JQuery,ajax异步加载<select><option></option></select>多选框:
- jQuery树形菜单,使用zTree插件,异步载入 & 编辑功能&Check 共存
- 使用JQuery.js & JQuery.form.js 插件完成对StrutsAction的异步请求,返回JSON数据
- 刷新验证码 || Jquery 异步提交表单 || D('websit')->where('siteid='.$CountUid)->getField('uid');
- <JQuery>双击编辑异步更新
- jquery异步调用页面后台方法‏(asp.net)
- sql安装过程中,为 SQL Server 代理服务提供的凭据无效。若要继续操作,请为 SQL&
- 使用Go Hijack和jQuery轻松实现异步推送服务
- 使用Go Hijack和jQuery轻松实现异步推送服务 推荐
- 使用Go Hijack和jQuery轻松实现异步推送服务
- Redis 代理服务Twemproxy(转)
- <JQuery>双击编辑异步更新
- jquery.form&jersey异步上传图片(SpringMVC版本)
- bootstrap jQuery Ztree异步载入数据,check选择&可加入、改动、删除节点
- bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
- Nginx ("engine x") 高性能的 HTTP 和 反向代理 服务器
- SQL2008 SQL Server 代理服务提供的凭据无效。若要继续操作,请为 SQL Server 代理服务提供有效的帐户