0

我有一个网页需要使用 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); 
        }
    });
});
4

2 回答 2

1

oData 端点不支持跨站点请求。它旨在仅支持使用 Silverlight 或 JavaScript Web 资源在 CRM 应用程序中进行身份验证。

查看此MSDN 文章以获取更多信息。

于 2012-06-20T20:29:36.600 回答
0

我想我前段时间遇到过类似的情况,该函数工作正常,但请求无法立即使用成功函数更新变量的值

这就是为什么我使用always()函数而不是成功来用接收到的值更新变量

新的 always 函数 = 请求完成后触发的旧函数

http://api.jquery.com/jQuery.ajax/

从此页面:弃用通知:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调将在 jQuery 1.8 中弃用。要为最终删除准备代码,请改用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()。

于 2012-06-20T08:21:09.200 回答