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 ...
随机推荐
- Oracle 安装安全补丁过程中出现的问题
为Oracle安装安全补丁,首先在官网上下载相应版本的补丁. 根据官方文档的说明安装,但是在安装的过程中会出项各种各样的错误,这里仅仅把我遇到的记录下来,给大家提供参考. 首先按照官方文档安装. 在这 ...
- asp.net网站性能优化2则
摘要:Web服务器的性能优化有很多资料介绍了,多台主机负载均衡,查询结果的多级缓 存,数据库索引优化等都是常见的优化手段.随着后端优化空间越来越小,现在越来越多 的网站更注重前端性能的优化,就是浏览器 ...
- sharepoint 模糊搜索
看资料知道sharepoint中模糊搜索可以用FullTextSqlQuery,因此我们就可以业务需求进行模糊搜索的自定义开发,可惜前一段时间自己写了一个模糊搜索,发现了一个问题,暂不知道如何过滤管理 ...
- springmvc使用@ResponseBody返回json乱码解决方法
1.springmvc 3.2以上的版本解决乱码的方法: 第一步:在配置中加入: <mvc:annotation-driven> <mvc:message-converters re ...
- 【bzoj1212】 [HNOI2004]L语言
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- PHP 内存的分布问题
php运行,内存分为5个区域, 1.基本数据类型--->栈区 2.符合数据类型-->堆区 对象实例在堆区,对象名字在栈区(指向此对象实例的变量)
- the account is currently locked out. The system administrator can unlock it.
今天遇到的问题比较有意思.首先是很久没有打开测试数据库了,今天打开,使用service程序测试的时候出现下面的错误提示:Message: System.Data.SqlClient.SqlExcept ...
- Oracle 11g 新特性(一)-- 虚拟列
数据库版本: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Oracle11g 增加了虚拟列的新特性, 具体说明如 ...
- JavaScript 快速入门回顾
数据类型Number JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型: 123; // 整数123 0.456; // 浮点数0.456 1.2345e ...
- Codevs 4768 跳石头 NOIP2015 DAY2 T1
4768 跳石头 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 一年一度的"跳石头"比赛又要开始了! ...