我正在尝试进行简单的odata查询并且调用成功,但结果始终未定义。我已将URL放入描述中,复制并粘贴它,它工作得很好。我已经测试了几十种不同的方法来查看对象是什么,结果是未定义的。我错过了什么?
更新:如下所述,部分问题是引用data.d.results。当我引用data.d.results [0]时,实际上我得到了错误消息“Unable to get property'0'of undefined or null reference。”我想在此处添加,因为我在搜索该错误消息时发现几乎没有帮助。
最终答案是:
的组合回到orig问题:
以下是我正在使用的代码:
function setOPDefaults() {
// Create lookup
var lookupItem = new Array();
lookupItem = Xrm.Page.getAttribute("productid").getValue();
if (lookupItem != null)
{
var guid = lookupItem[0].id;
}
var crmOrg = window.location.pathname.split('/')[1];
var serverUrl = window.location.protocol + "//" + window.location.host + (crmOrg == 'userdefined' ? '' : '/' + crmOrg);
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
var ODATA_PREP = serverUrl + ODATA_ENDPOINT;
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
// Tried both of the following URLS (obviously not at the same time)
url: ODATA_PREP + "/ProductSet(guid'" + guid + "')",
url: "http://crm/<<orgname>>/XRMServices/2011/OrganizationData.svc/ProductSet(guid'67BA90A3-39D8-E211-8D1E-0050569A6113')",
beforeSend: function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, XmlHttpRequest) {
var resProd = data.d.results;
alert(resProd.length); // This is undefined
// Below is where I load the URL into description just for testing.
// When I copy and paste this URL into the browser, it pulls up results with correct data
Xrm.Page.getAttribute("description").setValue(ODATA_PREP + "/ProductSet(guid'" + guid + "')");
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
alert("Ajax call failed: " + textStatus + " - " + errorThrown + " || " + XmlHttpRequest.responseText);
}
});
}
答案 0 :(得分:1)
你只能获得一条记录,所以试试这样的东西:
data.d
data.d.results用于多个结果。验证结果可以做的另一件事是将您的URL直接放在浏览器中。
答案 1 :(得分:0)
在这种情况下,我使用Fiddler。您可以使用它来调试http / https流量。
或者。如果你有crm 2011 RU 12,你可以使用内置的Chrome调试器。按F12。在控制台选项卡中 - 右键单击 - &gt;记录XMLHttpRequest