2013-12-23 118 views
2

我个人对CRM 2011没有任何经验,最近才发现REST oData API,因此决定使用基本的jQuery ajax调用对其进行破解。我创建了一个基本的html页面,并将下面的代码放在我从各种Google搜索中摘录的代码片段中。似乎是一个相当简单的电话:Dynamics CRM 2011使用jQuery的REST API

var serverurl = 'http://[OrganizationUrl]/XRMServices/2011/OrganizationData.svc/[PrivateEntity]?$select=[PrivateEntity_Field1],[PrivateEntity_Field2]'; 

$.ajax({ 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader('Accept', 'application/json'); 
    }, 
    url: serverurl, 
    type: 'GET', 
    dataType: 'jsonp', 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 
     alert('success'); 
    }, 
    error: function (xhr, status, error) { 
     alert("Error : " + status); 
    }, 
}); 

这一切确实是去错误回调和警报“错误:parseerror”。

上萤火仔细检查产生以下请求和响应头:Firebug Output

尽管在报头中明确指定JSON和内容仍然带回XML /原子饲料和仍然而来的错误回调而不是成功的。

此JavaScript是否必须从CRM内部执行,即先部署到CRM?或者它可以像我从一个外部自包含的HTML页面那样工作?我熟悉jQuery,但对CRM或此REST API不熟悉,所以在此深入一点。任何帮助表示赞赏

更新:我已经在执行的小提琴手下面的代码,并将其带回我从CRM期望:

GET http://[OrganizationUrl]/XRMServices/2011/OrganizationData.svc/[PrivateEntity]?$select=[PrivateEntity_Field1],[PrivateEntity_Field2] HTTP/1.1 
User-Agent: Fiddler 
Host: melmd0105:5555 
Accept: application/json 

回答

3

CRM 2011 REST端点仅适用于Web资源,这意味着必须从CRM内部执行。请参阅本页面:

http://msdn.microsoft.com/en-us/library/gg334279.aspx

下限制,你会发现这样的建议:

Use of the REST endpoint is limited to JScript libraries or Silverlight web resources.

+0

很公平。所以我想最好的选择是部署到CRM并从CRM中运行JavaScript。 – tkha007

3

我跟圭多的回答,微软表示,它是有限的JScript或Silverlight的同意,但我会说LinqPad已经想出了一种验证方法,而且你实际上可以编写linq查询来生成RestURL。这是我为CRM 2011生成Rest URL的最快方法(仅适用于On Prem)。

注意我试图使用提琴手来确定他们正在做什么来进行身份验证,但没有成功。

下面是使用LinqPad和CRM的SO问题:

How to perform an ODATA expand in LinqPad

+1

有关这个linqpad技巧很好的了解! –