我有一个网页,需要使用jQuery在线获取Dynamics CRM2011的信息。作为测试,我只是试图从测试系统中检索所有帐户。我已经使用了一些我在CRM产品中测试过的代码,它可以运行。
当我尝试在不在CRM域上的单独网页中运行相同的jQuery代码时,它不起作用(没有传输)所以我添加了$ .support.cors = true行以允许跨站点脚本。现在,当它运行时,会弹出一个询问凭据的对话框。但是,当我在线输入CRM凭据时,它不接受它们。经过三次尝试后,我收到错误,“未经授权”。
有人可以帮忙吗?
以下是代码:
$(document).ready(function()
{
var request = "https://myorganisation.crm4.dynamics.com/XRMServices/2011/OrganizationData.svc/AccountSet";
$.support.cors = true;
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: request,
async: false,
beforeSend:
function (XMLHttpRequest)
{
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success:
function (data, textStatus, XmlHttpRequest)
{
var result = data.d.results[0];
alert('Success');
alert(result);
alert(result.Name);
},
error:
function (XmlHttpRequest, textStatus, errorThrown)
{
alert(textStatus);
alert(errorThrown);
}
});
});
答案 0 :(得分:1)
oData端点不支持跨站点请求。它旨在仅使用Silverlight或JavaScript Web资源支持CRM应用程序内的身份验证。
请查看此MSDN article了解详情。
答案 1 :(得分:0)
我想我前段时间遇到过这样的事情 函数工作正常,但请求无法立即使用success函数更新变量的值
这就是为什么我使用always()
函数代替成功来用接收到的值更新变量
new always函数=请求完成后触发的旧完成函数
http://api.jquery.com/jQuery.ajax/
从此页面: 弃用注意:jQuery 1.8中不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调。要准备最终删除的代码,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。