簡體   English   中英

CRM女士(使用odata查詢)中的Javascript無法正常工作?

[英]Javascript in Ms CRM (with odata query) is not working?

我創建了一個javaScript(順便說一下我昨天才學到它)

此腳本設置為觸發OnSave事件的Accounts實體。 我使用我在Internet上找到的查詢構建器工具構建了一個odata查詢,該工具應該在2015-01-26T18:30:00.000Z($ filter = CreatedOn)之前創建所有任務($ select = ActivityId,CreatedOn)和whcih。 ge datetime'2015-01-26T18:30:00.000Z')

這是查詢構建器的實際查詢:

$.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    url: Xrm.Page.context.getClientUrl() + "/XRMServices/2011/OrganizationData.svc/TaskSet?$select=ActivityId,CreatedOn&$filter=CreatedOn ge datetime'2015-01-26T18:30:00.000Z'",
    beforeSend: function (XMLHttpRequest) {
        XMLHttpRequest.setRequestHeader("Accept", "application/json");
    },
    async: true,
    success: function (data, textStatus, xhr) {
        var results = data.d.results;
   for (var i = 0; i < results.length; i++) {
        var ActivityId = results[i].ActivityId;
        var CreatedOn = results[i].CreatedOn;
   }
    },
    error: function (xhr, textStatus, errorThrown) {
        alert(textStatus + " " + errorThrown);
    }
});

在查詢構建器中它返回結果:

[
    {
        "CreatedOn": "/Date(1422342587000)/",
        "ActivityId": "c23ba479-f3a5-e411-80dc-c4346bada6a4"
    },
    {
        "CreatedOn": "/Date(1422342783000)/",
        "ActivityId": "ba7754ee-f3a5-e411-80dc-c4346bada6a4"
    },
    {
        "CreatedOn": "/Date(1422343425000)/",
        "ActivityId": "12d40a6d-f5a5-e411-80dc-c4346bada6a4"
    }
]

在結果中我發現在返回日期創建的值為"CreatedOn": "/Date(1422343425000)/", ..

我想要在Accounts實體中創建新記錄前7天創建所有創建的任務。所以我寫的邏輯以通用值var current_date = Date().valueOf()獲得當前數據,並以毫秒為單位減去7天(7*24*60*60*1000=604800000) var week_earlier = current_date - 604800000;

在下面的代碼中,你可以看到我做了什么

function retrive()
{
    //var date =2015-01-26T18:30:00.000Z;
    var current_date = Date().valueOf();
    var week_earlier = current_date - 604800000;



    $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: Xrm.Page.context.getClientUrl() + "/XRMServices/2011/OrganizationData.svc/TaskSet?$select=ActivityId,CreatedOn&$filter=CreatedOn ge datetime'"+week_earlier+"'",
        beforeSend: function (XMLHttpRequest) {
            XMLHttpRequest.setRequestHeader("Accept", "application/json");
        },
        async: true,
        success: function (data, textStatus, xhr) {
            var results = data.d.results;
            for (var i = 0; i < results.length; i++) {
                var ActivityId = results[i].ActivityId;
                var CreatedOn = results[i].CreatedOn;
            }

            alert("number of records found  :"+results.length);

        },
        error: function (xhr, textStatus, errorThrown) {
            alert(textStatus + " " + errorThrown);
        }
    });

}

但它不起作用....它表明

"error Bad Request"

我也試過用瀏覽器的網址查詢

https://avikcompany.crm5.dynamics.com/XRMServices/2011/OrganizationData.svc/TaskSet?$select=CreatedOn,ActivityId&$filter=CreatedOn ge datetime'1422342587000'(this '1422342587000' is present in result  of the previously fired query). 

但它也犯了一個錯誤

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

    <head>
        <link rel="stylesheet" type="text/css" href="ErrorPageTemplate.css" >

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>HTTP 400 Bad Request</title>

        <script src="errorPageStrings.js" language="javascript" type="text/javascript">
        </script>
        <script src="httpErrorPagesScripts.js" language="javascript" type="text/javascript">
        </script>
    </head>

    <body onLoad="javascript:initHomepage(); expandCollapse('infoBlockID', true); initGoBack(); initMoreInfo('infoBlockID');">

        <table width="730" cellpadding="0" cellspacing="0" border="0">

        <!-- Error title -->
            <tr>
                <td id="infoIconAlign" width="60" align="left" valign="top" rowspan="2">
                    <img src="info_48.png" id="infoIcon" alt="Info icon">
                </td>
                <td id="mainTitleAlign" valign="middle" align="left" width="*">
                    <h1 id="mainTitle">The webpage cannot be found</h1>
                </td>
            </tr>



            <tr>
                <!-- This row is for HTTP status code, as well as the divider-->
                <td id="http400Align" class="errorCodeAndDivider" align="right"><ID id="http400">&nbsp;HTTP 400</ID>
                    <div class="divider"></div>
                </td>
            </tr>


        <!-- Error Body -->

        <!-- What you can do -->
            <tr>
                <td>
                    &nbsp;
                </td>
                <td id="likelyCausesAlign" valign="top" align="left">
                    <h3 id="likelyCauses">Most likely causes:</h3>
                    <ul>
                        <li id="causeErrorInAddress">There might be a typing error in the address.</li>
                        <li id="causeLinkOutOfDate">If you clicked on a link, it may be out of date.</li>
                    </ul>
                </td>
            </tr>

            <tr>
                <td>
                    &nbsp;
                </td>
                <td id="whatToTryAlign" valign="top" align="left">
                    <h2 id="whatToTry">What you can try:</h2>
                </td>
            </tr>

        <!-- retype address -->
            <tr>
                <td >
                    &nbsp;
                </td>
                <td id="retypeAddressAlign" align="left" valign="middle">
                    <h4>
                        <table>
                          <tr>
                              <td valign="top">
                                  <img src="bullet.png" border="0" alt="" class="actionIcon">
                              </td>
                              <td valign="top">
                                  <ID id="retypeAddress">Retype the address.</ID>
                              </td>
                          <tr>
                        </table>
                    </h4>
                </td>
            </tr>

        <!-- back to previous page -->
            <tr>
                <td >
                    &nbsp;
                </td>
                <td id="goBackAlign" align="left" valign="middle">
                    <h4>
                        <table>
                          <tr>
                              <td valign="top">
                                  <img src="bullet.png" border="0" alt="" class="actionIcon">
                              </td>
                              <td valign="top">
                                  <span id="goBackContainer"></span><noscript id="goBack">Go back to the previous page.</noscript>
                              </td>
                          </tr>
                        </table>
                    </h4>
                </td>
            </tr>


        <!-- top level domain-->
            <tr>
                <td >
                    &nbsp;
                </td>
                <td id="mainSiteAlign" align="left" valign="middle">
                    <h4>
                        <table>
                          <tr>
                              <td valign="top">
                                  <img src="bullet.png" border="0" alt="" class="actionIcon">
                              </td>
                              <td valign="top">
                                  <ID id="mainSite1">Go to </ID><span id="homepageContainer"><noscript id="mainSite2">the main site</noscript></span><ID id="mainSite3">&nbsp;and look for the information you want.</ID>
                              </td>
                          </tr>
                        </table>
                    </h4>
                </td>
            </tr>

        <!-- InfoBlock -->
            <tr>
                <td id="infoBlockAlign" align="right" valign="top">
                    &nbsp;
                </td>
                <td id="moreInfoAlign" align="left" valign="middle">
                    <h4>
                        <table>
                          <tr>
                              <td valign="top">
                                  <a href="#" onclick="javascript:expandCollapse('infoBlockID', true); return false;"><img src="down.png" id="infoBlockIDImage" border="0" class="actionIcon" alt="More information"></a>
                              </td>
                              <td valign="top">
                                  <span id="moreInfoContainer"></span>
                                  <noscript><ID id="moreInformation">More information</ID></noscript>
                              </td>
                          </tr>
                        </table>
                    </h4>
                    <div id="infoBlockID" class="infoBlock">
                        <p id="errorExplanation">This error (HTTP 400 Bad Request) means that Internet Explorer was able to connect to the web server, but the webpage could not be found because of a problem with the address.</p>
                        <p id="moreInfoSeeHelp">For more information about HTTP errors, see Help.</p>
                    </div>
                </td>
            </tr>
        </table>

    </body>
</html>

任何人都可以告訴我哪里出錯了嗎? (我假設我提到的日期值沒有被crm odata服務加入)或者如何將日期轉換為這種格式“yyyy-mm-ddThh:mm:ss.uuuZ”

您可以使用toISOString()輕松獲取該格式的日期;

http://jsfiddle.net/j5m97nfv/3/

var current_date = new Date().valueOf();
var week_earlier = new Date(current_date - 604800000);
var n = week_earlier.toISOString();

您在上面的代碼中遇到的一個問題是您沒有構建新的Date對象。 您的current_date實際上返回的日期字符串不是日期的表示形式,以毫秒為單位。 你需要新的Date();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM