gpt4 book ai didi

Ms CRM 中的 Javascript(带有 odata 查询)无法正常工作?

转载 作者:行者123 更新时间:2023-11-29 10:41:30 25 4
gpt4 key购买 nike

我创建了一个javaScript(顺便说一下我昨天才学的)

此脚本设置为在 Accounts 实体的 OnSave 事件时触发。我使用我在 Internet 上找到的查询生成器工具构建了一个 odata 查询,该工具应该检索所有任务($select=ActivityId,CreatedOn)并且在 2015-01-26T18:30:00.000Z($filter=CreatedOn)之前创建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"

我也尝试在浏览器的 url 中查询

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 实际上返回一个日期字符串,该字符串不是以毫秒为单位的日期表示形式。你需要新的日期();

关于Ms CRM 中的 Javascript(带有 odata 查询)无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28166926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com