【问题标题】:What does readyState ==1 means?readyState ==1 是什么意思?
【发布时间】:2017-09-01 18:32:50
【问题描述】:

我正在使用以下函数来获取特定 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,这就是我无法找到产品编号值的原因。响应值也不包含任何内容。谁能告诉我我是否在某个地方错了。

【问题讨论】:

  • 你能帮我找出为什么 readyState 是 1。我检查了我的 httprequest。好像还可以
  • readyState == 1...
  • 我在调试模式下得到这个值。 req.open 语句不返回预期的 url。它说未定义
  • 尝试使用 Fiddler 来分析请求和响应

标签: javascript xmlhttprequest asp.net-web-api2 dynamics-crm


【解决方案1】:

尝试通过几个步骤调试您的代码以找出问题。

先替换这行代码

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);
  1. URL 看起来正确吗?
  2. 如果直接在浏览器中打开,是否返回正确的结果?

如果有效,您可以继续下一步。如果没有,您需要修复 URL。您可以从删除 URL 末尾的部分开始。另外,您的 CRM 版本是什么?是 8.2(Dynamics 365)吗?

其次,通过调试模式,检查对象this,尤其是responseresponseText属性,它们是否包含一些消息。

第三,在 F12 工具中检查请求和响应。根据浏览器,该选项卡称为 Net 或 Network。可以有很多项。在运行代码之前清除列表。看看那里发生了什么,为您的请求返回了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2016-11-18
    • 2019-11-19
    • 2016-09-20
    • 2020-03-08
    相关资源
    最近更新 更多