Dynamics CRM 2011编程系列(60):JS编程之CRUD辅助类(JQuery版)
2013-08-20 21:00
141 查看
今天给大家分享一个JQuery版的REST辅助类,在一年前我分享过一个只能在IE环境下运行的REST辅助类:《JS编程之实体CRUD辅助类 》。为什么要推出JQuery版的CRUD辅助类呢? 原因有三:其一为Dynamics CRM兼容多种浏览器已经成为了一个不争的事实;其二为JQuery在Dynamics CRM 2013中已经被原生支持;其三为可以省去对json.js文件的引用。
新版本的辅助类还添加了4个CRUD的异步方法,这样咱们的这个辅助类就同时支持异步和同步的CRUD操作啦,该辅助类的代码如下:
在Dynamics CRM 2011环境中使用该辅助类需要先引用JQuery类库
新版本的辅助类还添加了4个CRUD的异步方法,这样咱们的这个辅助类就同时支持异步和同步的CRUD操作啦,该辅助类的代码如下:
SOURCE CODE
/* 作者:GhostBear 博客: http://blog.csdn.net/ghostbear 简介:REST中的CRUD操作辅助脚本。 */ function RESTHelper() { } /* 方法简介:通过REST对Dynamics CRM 中的实体进行Create操作。 输入参数: createurl:调用Dynamics CRM数据服务的URL字符串。例如:"/GH2011/XRMServices/2011/OrganizationData.svc/ContactSet" jsondata:需要进行Create操作的对象,必须进行json序列化。 输出参数: true:Create成功。 false:Create失败。 */ RESTHelper.prototype.Create = function (createurl, jsondata) { var isCreated = false; $.ajax({ headers: { Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': jsondata.length }, type: 'POST', url: createurl, async: false, cache: false, data: jsondata, complete: function (context, result) { if (result.toLowerCase() == 'success') { isCreated = true; } } });//ajax return isCreated; } /* 方法简介:通过REST对Dynamics CRM 中的实体进行Create操作。 输入参数: createurl:调用Dynamics CRM数据服务的URL字符串。例如:"/GH2011/XRMServices/2011/OrganizationData.svc/ContactSet" jsondata:需要进行Create操作的对象,必须进行json序列化。可以用JQuery自带的序列话工具进行序列化:$.ajax.parseJSON(data) callbackhandler: 该回调函数应该遵循如下格式: function callbackhandler(results,entity) { if(results==false) { //调用失败 } else { //调用成功 } } 输出参数: 无 */ RESTHelper.prototype.CreateAsync = function (createurl, jsondata, callbackhandler) { $.ajax({ headers: { Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': jsondata.length }, type: 'POST', url: createurl, async: true, cache: false, data: jsondata, complete: function (context, result) { var isCreated = false; var entity = null; if (result.toLowerCase() == 'success') { isCreated = true; try { entity = $.parseJSON(context.responseText).d; } catch (e) { } } callbackhandler(isCreate, entity); } });//ajax } /* 方法简介:通过REST对Dynamics CRM 中的实体进行Read操作。 输入参数: queryurl:调用Dynamics CRM数据服务的URL字符串。例如:"/GH2011/XRMServices/2011/OrganizationData.svc/ContactSet(guid'{B75B220A-D2A4-48F4-8002-D8B564A866EA}')" 输出参数: Object:获得了返回值 Null:查询失败。 */ RESTHelper.prototype.Read = function (queryurl) { var data = null; $.ajax({ headers: { Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': 0 }, type: 'GET', url: queryurl, async: false, cache: false, complete: function (context, result) { if (result.toLowerCase() == 'success') { try { data = $.parseJSON(context.responseText).d; } catch (e) { } } } });//ajax return data; } /* 方法简介:通过REST对Dynamics CRM 中的实体进行异步的Read操作。 输入参数: queryurl:调用Dynamics CRM数据服务的URL字符串。例如:"/GH2011/XRMServices/2011/OrganizationData.svc/ContactSet(guid'{B75B220A-D2A4-48F4-8002-D8B564A866EA}')" callbackhandler: 该回调函数应该遵循如下格式: function callbackhandler(results) { if(results==null) { //调用失败 } else { //调用成功 } } 输出参数: 无 */ RESTHelper.prototype.ReadAsync = function (queryurl, callbackhandler) { $.ajax({ headers: { Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': 0 }, type: 'GET', url: queryurl, async: true, cache: false, complete: function (context, result) { var data = null; if (result.toLowerCase() == 'success') { try { data = $.parseJSON(context.responseText).d; } catch (e) { } } callbackhandler(data); } });//ajax } /* 简介:通过REST方式更新实体。 输入参数描述: updateurl:"/GH2011/XRMServices/2011/OrganizationData.svc/OpportunitySet(guid'{DA83B96B-DBAF-4F0C-A75D-7203F2502087}')" entity: 需要更新的对象,对象必须为JASON格式。 输出参数: 更新成功返回:true 更新失败返回:false */ RESTHelper.prototype.Update = function (updateurl, jsondata) { var isUpdated = false; $.ajax({ headers: { Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': jsondata.length, 'X-HTTP-Method': 'MERGE' }, type: 'POST', url: updateurl, async: false, cache: false, data: jsondata, complete: function (context, result) { if (result.toLowerCase() == 'success') { isUpdated = true; } } });//ajax return isUpdated; } /* 简介:通过REST方式更新实体。 输入参数描述: updateurl:"/GH2011/XRMServices/2011/OrganizationData.svc/OpportunitySet(guid'{DA83B96B-DBAF-4F0C-A75D-7203F2502087}')" jsondata:需要进行Create操作的对象,必须进行json序列化。可以用JQuery自带的序列话工具进行序列化:$.ajax.parseJSON(data) callbackhandler: 该回调函数应该遵循如下格式: function callbackhandler(results) { if(results==false) { //调用失败 } else { //调用成功 } } 输出参数: 无 */ RESTHelper.prototype.UpdateAsync = function (updateurl, jsondata, callbackhandler) { $.ajax({ headers: { Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': jsondata.length, 'X-HTTP-Method': 'MERGE' }, type: 'POST', url: updateurl, async: true, cache: false, data: jsondata, complete: function (context, result) { var isUpdated = false; if (result.toLowerCase() == 'success') { isUpdated = true; } callbackhandler(isUpdated); } });//ajax } /* 简介:通过REST方式删除实体。 参数描述: deleteurl:"/GH2011/XRMServices/2011/OrganizationData.svc/ContactSet(guid'{DA83B96B-DBAF-4F0C-A75D-7203F2502087}')" 返回类型: 删除成功返回:true 删除失败返回:false */ RESTHelper.prototype.Delete = function (deleteurl) { var isDeleted = false; $.ajax({ headers: { Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8', 'X-HTTP-Method': 'DELETE' }, type: 'POST', url: deleteurl, async: false, cache: false, data: null, complete: function (context, result) { if (result.toLowerCase() == 'success') { isDeleted = true; } } });//ajax return isDeleted; } /* 简介:通过REST方式删除实体。 参数描述: deleteurl:"/GH2011/XRMServices/2011/OrganizationData.svc/ContactSet(guid'{DA83B96B-DBAF-4F0C-A75D-7203F2502087}')" callbackhandler: 该回调函数应该遵循如下格式: function callbackhandler(results) { if(results==false) { //调用失败 } else { //调用成功 } } 输出参数: 无 */ RESTHelper.prototype.DeleteAsync = function (deleteurl, callbackhandler) { $.ajax({ headers: { Accept: 'application/json', 'Content-Type': 'application/json; charset=utf-8', 'X-HTTP-Method': 'DELETE' }, type: 'POST', url: deleteurl, async: false, cache: false, data: null, complete: function (context, result) { var isDeleted = false; if (result.toLowerCase() == 'success') { isDeleted = true; } callbackhandler(isDeleted); } });//ajax }
TEST CASE
function Test_RESTHelper() { var Helper = new RESTHelper(); var isok; var id = ""; var entitySet="" //path var createurl = "/example/XRMServices/2011/OrganizationData.svc/"+entitySet; var updateurl = "/example/XRMServices/2011/OrganizationData.svc/"+entitySet+"(guid'"+id+"')"; var queryurl = "/example/XRMServices/2011/OrganizationData.svc/"+entitySet+"(guid'"+id+"')"; var querymultipleurl = "/example/XRMServices/2011/OrganizationData.svc/"+entitySet; var deleteurl = "/example/XRMServices/2011/OrganizationData.svc/"+entitySet+"(guid'"+id+"')"; //Create //sync var myAccount = new Object(); myAccount.new_name= "TestRESTHelper"; isok = Helper.Create(createurl, JSON.stringify(myAccount)); alert("Create:" + isok.toString()); //async var myAccount = new Object(); myAccount.new_name = "TestRESTHelper"; isok = Helper.CreateAsync(createurl, JSON.stringify(myAccount), CreateCompleteHandler); //Update //sync myAccount = new Object(); myAccount.new_name = "new_TestRESTHelper"; isok = Helper.UpdateAsync(updateurl, JSON.stringify(myAccount)); alert("update:" + isok.toString()); //async myAccount = new Object(); myAccount.new_name = "new_TestRESTHelper"; isok = Helper.UpdateAsync(updateurl, JSON.stringify(myAccount), UpdateCompleteHandler); //Read //获取单条记录 //sync var data = Helper.Read(queryurl); alert(data.new_name); //async var data = Helper.ReadAsync(queryurl, QueryCompleteHandler); //获取多记录 //sync var data = Helper.ReadAsync(querymultipleurl); var result = ""; var tmp; for (tmp in data.results) { result += data.results[tmp].new_name+ "\n"; } alert(result); //async var data = Helper.ReadAsync(querymultipleurl, MultipleQueryCompleteHandler); //Delete //sync isok = Helper.DeleteAsync(deleteurl); alert("Delete:" + isok.toString()); //async isok = Helper.DeleteAsync(deleteurl, DeleteCompleteHandler); } function CreateCompleteHandler(results,entity) { alert('create:' + results.toString()); } function UpdateCompleteHandler(results) { alert('update:' + results.toString()); } function DeleteCompleteHandler(results) { alert('delete:' + results.toString()); } function QueryCompleteHandler(results) { if (results != null) { alert(results.new_name); } else { alert('fault'); } } function MultipleQueryCompleteHandler(results) { if (results != null) { alert(results.results[0].new_name); } else { alert('fault'); } }
注意
在Dynamics CRM 2011环境中使用该辅助类需要先引用JQuery类库
相关文章推荐
- Dynamics CRM 2011编程系列(60):JS编程之CRUD辅助类(JQuery版)
- Dynamics CRM 2011 编程系列 (8):JS编程之实体CRUD辅助类
- Dynamics CRM 2011 编程系列 (6):JS脚本编程之实体的CRUD[Create,Read]
- Dynamics CRM 2011 编程系列(7):JS编程之实体的CRUD[Update,Delete]
- Dynamics CRM 2011 编程系列(2):JS脚本编程之onload事件
- Dynamics CRM 2011 编程系列(11):JS编程之征服表单控件(一)
- Dynamics CRM 2011 编程系列(5):JS脚本编程之实战一
- Dynamics CRM 2011 编程系列(13):JS编程之Who Am I
- Dynamics CRM 2011 编程系列(2):JS脚本编程之onload事件
- Dynamics CRM 2011 编程系列(9):JS编程之客户端实体
- Dynamics CRM 2011 编程系列(3):JS脚本编程之onsave事件
- Dynamics CRM 2011 编程系列(17):用插件来实现实体的CRUD
- Dynamics CRM 2011 编程系列(15):用JS事件提交表单
- Dynamics CRM 2011 编程系列(10):JS编程之构造OData查询字符串
- Dynamics CRM 2011 编程系列(12):JS编程之征服表单控件(二)
- Dynamics CRM 2011编程系列(45):编程实现文档上传功能
- Dynamics CRM 2011 编程系列(14):JS编程之表单控件的执行上下文
- Dynamics CRM 2011编程系列(43):JavaScript 的调试
- Dynamics CRM 2011 编程系列(26):自定义工作流
- [js高手之路] 设计模式系列课程 - jQuery的链式调用与灵活的构造函数