Dynamics CRM 2011编程系列(60):JS编程之CRUD辅助类(JQuery版)
今天给大家分享一个JQuery版的REST辅助类,在一年前我分享过一个只能在IE环境下运行的REST辅助类:《JS编程之实体CRUD辅助类 》。为什么要推出JQuery版的CRUD辅助类呢? 原因有三:其一为Dynamics CRM兼容多种浏览器已经成为了一个不争的事实;其二为JQuery在Dynamics CRM 2013中已经被原生支持;其三为可以省去对json.js文件的引用。
新版本的辅助类还添加了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版)的更多相关文章
- Dynamices CRM JS 类库 神器 XrmServiceToolkit - A Microsoft Dynamics CRM 2011 & CRM 2013 JavaScript Library
		
XrmServiceToolkit - A Microsoft Dynamics CRM 2011 & CRM 2013 JavaScript Library http://xrmservic ...
 - Microsoft Dynamics CRM4.0 和 Microsoft Dynamics CRM 2011 JScript 方法对比
		
CRM 2011 如果需要再IE里面调试,可以按F12在前面加上contentIFrame,比如 contentIFrame.document.getElementById("字段" ...
 - Microsoft Dynamics CRM 2011 安装完全教程
		
作者:卞功鑫,转载请保留.http://www.cnblogs.com/BinBinGo/p/4302612.html 环境介绍 WINDOWS 2008 R2 Datacenter Microsof ...
 - Dynamics CRM 2011 WebResources
		
Type Limitation Capabilities Usage Images JPG, PNG, GIF, ICO Custom entity icons Icons for custom ...
 - Step by step Dynamics CRM 2011升级到Dynamics CRM 2013
		
原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...
 - How to control PrincipalObjectAccess table growth in Microsoft Dynamics CRM 2011
		
https://support.microsoft.com/en-us/kb/2664150 How to control PrincipalObjectAccess table growth in ...
 - Dynamics CRM 2011 权限管理(转)
		
http://www.cnblogs.com/LeoTang/p/3344265.html Dynamics CRM 2011 权限管理 CRM系统基于角色的权限主要通过部门.角色.用户.团队来 进行 ...
 - Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法(转)
		
本篇文章,介绍Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法. RetreiveMultiple方法,用于获取实体的多个实例,该方法的签名如下 ...
 - Error message “Assembly must be registered in isolation” when registering Plugins in Microsoft Dynamics CRM 2011 2013 解决办法
		
Error message “Assembly must be registered in isolation” when registering Plugins in Microsoft Dynam ...
 
随机推荐
- asp.net  pagebase获取缓存的方法
			
public string GetSysConfigByKey(string key) { if (object.Equals(HttpContext.Current.Cache["Cach ...
 - css hack 大全
			
各个浏览器的css hack区别属性: IE6: _zoom:1; IE6/7: *zoom:1; IE6/7/8/9 :\9 各个浏览器的css hack区别规则 IE6: *html{} IE7: ...
 - HTTP 错误 500.19- Internal Server Error 错误解决方法                                                       分类:            Windows服务器配置             2015-01-08 20:16    131人阅读    评论(0)    收藏
			
1.第一种情况如下: 解决方法如下: 经过检查发现是由于先安装Framework组件,后安装iis的缘故,只需重新注册下Framework就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示 ...
 - 面向报文(UDP)和面向字节流(TCP)的区别
			
转载:http://blog.csdn.net/wanghaobo920/article/details/11877589 面向报文(UDP)和面向字节流(TCP)的区别 面向报文的传输方式是应用层交 ...
 - JS关闭窗口或JS关闭页面的几种代码
			
//JS定时自动关闭窗口 <script language="javascript"> <!-- function closewin(){ self.opener ...
 - orm fluentdata使用相关文章
			
微型orm fluentdata使用:http://www.360doc.com/content/12/1228/23/9200790_256885743.shtml
 - 最新的 iOS 申请证书与发布流程(2016.12)
			
今天刚好客户定制的APP需要上架,也提供了新的开发者账号,所以就顺带把申请证书与发布流程写一遍. 证书是什么? 上面这个就是我们申请好证书后,下载到本地的.cer文件,也就是常说的开发证书与发布证书的 ...
 - UIView的layoutSubviews和drawRect方法
			
UIView的layoutSubviews和drawRect方法 首先两个方法都是异步执行.layoutSubviews方便数据计算,drawRect方便视图重绘. layoutSubview ...
 - winform中的chat
			
百度一下 源代码下载:百度一下
 - [Neural Networks] Dropout阅读笔记
			
多伦多大学Hinton组 http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf 一.目的 降低overfitting的风险 二.原理 ...