2017-09-01 70 views
-3

私はこの特定の製品番号を取得するためにこの機能を使用していますproductidreadyState == 1とはどういう意味ですか?

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を返しています。また、応答値には何も含まれていません。私がどこか間違っているか誰にでも教えてもらえますか?

+2

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState – Dekel

+0

私は、readyStateが1である理由を知ることができますか?私は自分のhttprequestをチェックしました。 – Mishigen

+0

'readyState == 1'のときにあなたの関数の中でどこがチェックされているのかわかりません... – Dekel

答えて

0

いくつかの手順でコードをデバッグして問題を見つけてください。

まず

var url= Xrm.Page.context.getClientUrl() + "/api/data/v8.2/products("+id+")?$select=productnumber";  
console.log(url); 
req.open("GET", url, true); 
  1. によってコード

    req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/products("+id+")?$select=productnumber", true); 
    

    のこの行を置き換えるURLが正しい見ていますか?

  2. ブラウザで直接開くと正しい結果が返されますか?

これが機能する場合は、さらに先に進むことができます。そうでない場合は、URLを修正する必要があります。まず、URLの最後から部分を削除します。また、あなたのCRMバージョンは何ですか?それは8.2(Dynamics 365)ですか?

第2に、デバッグモードを使用して、オブジェクト、特に属性responseresponseTextを検査します。メッセージにはメッセージが含まれていますか。

第3に、F12ツールで要求と応答を検査します。ブラウザに応じてタブはNetまたはNetworkと呼ばれます。多くのアイテムがあります。コードを実行する前にリストをクリアしてください。何が起こったのか、あなたの要求に応じて返されるものを見てください。

関連する問題