Dynamics CRM 2011 编程系列 (8):JS编程之实体CRUD辅助类

用JS开发Dynamics CRM功能需要十分的小心,往往一个拼写错误就能让你调试一个上午。在经历了若干天的痛苦后,我重新祭起了代码重用这面大旗。下面分享一个我制作的辅助类,希望能帮到大家!

类代码:

/* 作者:GhostBear 博客: http://blog.csdn.net/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 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); xmlhttp.Open("POST", createurl, false); xmlhttp.SetRequestHeader("Content-Type", "application/json; charset=utf-8"); xmlhttp.SetRequestHeader("Content-Length", jsondata.length); xmlhttp.SetRequestHeader("Accept", "application/json"); xmlhttp.Send(jsondata); if (xmlhttp.readyState == 4) { if (xmlhttp.status == 201) { return true; } else { return false; } }//if } /* 方法简介:通过REST对Dynamics CRM 中的实体进行Read操作。 输入参数: parameter:调用Dynamics CRM数据服务的URL字符串。例如:"/GH2011/XRMServices/2011/OrganizationData.svc/ContactSet(guid'{B75B220A-D2A4-48F4-8002-D8B564A866EA}')" 输出参数: Object:获得了返回值 Null:查询失败。 */ RESTHelper.prototype.Read = function (queryurl) { var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); xmlhttp.Open("GET", queryurl, false); xmlhttp.SetRequestHeader("Content-Type", "application/json; charset=utf-8"); xmlhttp.SetRequestHeader("Content-Length", 0); xmlhttp.SetRequestHeader("Accept", "application/json"); xmlhttp.Send(null); if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { return window.JSON.parse(xmlhttp.responseText).d; } else { return null; } } } /* 简介:通过REST方式更新实体。 输入参数描述: updateurl:"/GH2011/XRMServices/2011/OrganizationData.svc/OpportunitySet(guid'{DA83B96B-DBAF-4F0C-A75D-7203F2502087}')" entity: 需要更新的对象,对象必须为JASON格式。 输出参数: 更新成功返回:true 更新失败返回:false */ RESTHelper.prototype.Update = function (updateurl, entity) { var uptXmlHttpReq = new XMLHttpRequest(); uptXmlHttpReq.open("POST", updateurl, false); uptXmlHttpReq.setRequestHeader("Accept", "application/json"); uptXmlHttpReq.setRequestHeader("Content-Type", "application/json; charset=utf-8"); uptXmlHttpReq.setRequestHeader("X-HTTP-Method", "MERGE"); uptXmlHttpReq.send(entity); if (uptXmlHttpReq.readyState == 4) { if (uptXmlHttpReq.status == 204 || uptXmlHttpReq.status == 1223) { return true; } else { return false; } } } /* 简介:通过REST方式删除实体。 参数描述: deleteurl:"/GH2011/XRMServices/2011/OrganizationData.svc/ContactSet(guid'{DA83B96B-DBAF-4F0C-A75D-7203F2502087}')" 返回类型: 删除成功返回:true 删除失败返回:false */ RESTHelper.prototype.Delete = function (deleteurl) { var uptXmlHttpReq = new XMLHttpRequest(); uptXmlHttpReq.open("POST", deleteurl, false); //第三个参数表示是否已异步的方式发起请求 uptXmlHttpReq.setRequestHeader("Accept", "application/json"); uptXmlHttpReq.setRequestHeader("Content-Type", "application/json; charset=utf-8"); uptXmlHttpReq.setRequestHeader("X-HTTP-Method", "DELETE"); uptXmlHttpReq.send(null); if (uptXmlHttpReq.readyState == 4) { if (uptXmlHttpReq.status == 204 || uptXmlHttpReq.status == 1223) { return true; } else { return false; } } }


调用代码(使用说明)

function Test_RESTHelper() { var Helper=new RESTHelper(); var isok; //Create var createurl="/gh2011/XRMServices/2011/OrganizationData.svc/AccountSet"; var myAccount=new Object(); myAccount.Name="TestRESTHelper"; isok=Helper.Create(createurl,JSON.stringify(myAccount)); alert("Create:"+isok.toString()); //Update var updateurl="/gh2011/XRMServices/2011/OrganizationData.svc/AccountSet(guid'A972039B-5268-E111-8668-000C292C54BE')"; myAccount=new Object(); myAccount.Name="new_TestRESTHelper"; isok=Helper.Update(updateurl,JSON.stringify(myAccount)); alert("update:"+isok.toString()); //Read //获取单条记录 var queryurl="/gh2011/XRMServices/2011/OrganizationData.svc/AccountSet(guid'182752ee-5868-e111-8668-000c292c54be')"; var data=Helper.Read(queryurl); alert(data.Name); //获取多记录 var queryurl="/gh2011/XRMServices/2011/OrganizationData.svc/AccountSet"; var data=Helper.Read(queryurl); var result=""; var tmp; for(tmp in data.results) { result+=data.results[tmp].Name+"\n"; } alert(result); //Delete var deleteurl="/gh2011/XRMServices/2011/OrganizationData.svc/AccountSet(guid'A972039B-5268-E111-8668-000C292C54BE')"; isok=Helper.Delete(deleteurl); alert("Delete:"+isok.toString()); }



小结

CRUD中的4个方法,除了Read方法外,其他的方法都返回布尔值,操作成功返回true。Read方法返回的结果会有2种形式:单一对象;一个数组。读取的时候注意格式就ok啦。

代码下载

JSON序列化脚本下载

本章代码下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值