2012-06-20 56 views
0

我有一個網頁,需要從Dynamics CRM2011在線使用jQuery獲取信息。作爲測試,我試圖從測試系統中檢索所有帳戶。我已經使用了我在CRM產品中測試過的一些代碼,並且它可以工作。爲什麼我的Dynamics CRM聯機jQuery oData查詢不起作用?

當我嘗試在不在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); 
     } 
    }); 
}); 

回答

1

oData端點不支持跨站點請求。它旨在僅使用Silverlight或JavaScript Web資源在CRM應用程序內支持身份驗證。

看看這個MSDN article欲瞭解更多信息。

0

我想我遇到了類似的東西前段時間 功能工作正常,但要求不能與成功的功能更新變量的值馬上

這就是爲什麼我使用always()函數而不是成功更新接收值的變量

新的always函數=在請求完成後觸發的舊完成函數

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

從該頁面

: 棄用通知:jqXHR.success(),jqXHR.error(),和jqXHR.complete()回調將在jQuery的1.8被棄用。要準備代碼以便最終刪除它們,請改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

+0

我不知道如何使用這些(我不是一個jQuery開發人員)。我會刪除成功和錯誤值,將錯誤的東西放在fail()函數中,並將成功的東西放在always()位中?我可以離開beforeSend:部分和其他所有內容(請求標頭設置需要CRM)。 – Richard

+0

...如果是這樣,我嘗試了,我得到了同樣的結果。我被問及重複的憑據,但他們不工作:( – Richard