使用jQuery的Dynamics CRM 2011 REST API

使用jQuery的Dynamics CRM 2011 REST API,api,rest,jquery,dynamics-crm-2011,dynamics-crm,Api,Rest,Jquery,Dynamics Crm 2011,Dynamics Crm,我个人对CRM 2011没有任何经验,只是最近才了解到REST oData API,所以决定使用基本的jQuery ajax调用来破解它。我创建了一个基本的html页面,并将以下代码放在其中,这些代码来自我从各种Google搜索中提取的代码片段。这似乎是一个相当直截了当的呼吁: var serverurl = 'http://[OrganizationUrl]/XRMServices/2011/OrganizationData.svc/[PrivateEntity]?$select=[Priva

我个人对CRM 2011没有任何经验,只是最近才了解到REST oData API,所以决定使用基本的jQuery ajax调用来破解它。我创建了一个基本的html页面,并将以下代码放在其中,这些代码来自我从各种Google搜索中提取的代码片段。这似乎是一个相当直截了当的呼吁:

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);
    },
}); 
所有这一切只是转到错误回调并发出警报“error:parseerror”

仔细检查FireBug会得到以下请求和响应头:

尽管在头和内容中显式指定了json,但它仍然返回xml/atom提要,并且仍然返回错误回调,而不是成功

是否必须从CRM内部执行此JavaScript,即首先部署到CRM?或者它可以像我在外部自包含HTML页面中所做的那样工作吗?我熟悉jQuery,但不熟悉CRM或这个restapi,所以这里有点超出我的深度。谢谢你的帮助

更新:我在fiddler中执行了以下代码,它带回了我对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

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

在限制条件下,您会发现以下建议:

REST端点的使用仅限于JScript库或 SilverlightWeb资源


我同意Guido的回答,即Microsoft说它仅限于Jscript或Silverlight,但我要说的是,它已经找到了一种进行身份验证的方法,您实际上可以编写linq查询来生成RestURL。这是我为CRM 2011生成Rest URL的最快方法(仅适用于On-Prem)

注意:我尝试使用Fiddler来确定他们在做什么来进行身份验证,但没有成功

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


很公平。因此,我想最好的选择是部署到CRM并从CRM中运行JavaScript。