我正在使用以下功能来获取特定productid
的产品编号。
function GetQuickCode(){
var material = Xrm.Page.getAttribute("one_materialid").getValue();
var id = material[0].id;
id=id.replace("{","").replace("}","");
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/products("+id+")?$select=productnumber", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function () {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var result = JSON.parse(this.response);
var productnumber = result["productnumber"];
Xrm.Page.getAttribute("one_quickcode").setValue(productnumber.Value);
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
}
此函数返回readyState==1
,这就是为什么我无法找到产品编号的值。响应值也不包含任何内容。任何人都可以告诉我,如果我错了。
答案 0 :(得分:0)
尝试通过几个步骤调试代码以找到问题。
首先替换这行代码
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/products("+id+")?$select=productnumber", true);
通过
var url= Xrm.Page.context.getClientUrl() + "/api/data/v8.2/products("+id+")?$select=productnumber";
console.log(url);
req.open("GET", url, true);
如果有效,您可以继续。如果没有,则需要修复URL。您可以从URL末尾删除部分。另外,您的CRM版本是什么?它是8.2(Dynamics 365)吗?
其次,通过使用调试模式,检查对象this
,尤其是属性response
和responseText
,它们是否包含某些消息。
第三,在F12工具中检查请求和响应。该选项卡根据浏览器称为网络或网络。可以有很多项目。在运行代码之前清除列表。看看发生了什么,为您的请求返回了什么。