Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用JavaScript和REST OData查询CRM 2011 AppointmentSet时测试d.data.results中存在哪些数据_Javascript_Rest_Dynamics Crm 2011_Odata_Appointment - Fatal编程技术网

如何在使用JavaScript和REST OData查询CRM 2011 AppointmentSet时测试d.data.results中存在哪些数据

如何在使用JavaScript和REST OData查询CRM 2011 AppointmentSet时测试d.data.results中存在哪些数据,javascript,rest,dynamics-crm-2011,odata,appointment,Javascript,Rest,Dynamics Crm 2011,Odata,Appointment,我正在尝试在我的帐户表单上填充一个字段,该字段显示帐户完成约会的最后实际结束日期。我的查询似乎完全符合我的要求。我使用该解决方案创建了我的查询,但我无法处理发生的情况,例如,如果帐户没有完成的活动,或者我创建了一个完全没有约会的新帐户 我试图在JavaScript的ExecuteQuery函数中测试返回到success方法的data.d.results值 当新创建帐户或帐户没有完成约会活动时,visual studio中即时窗口中的data.d.results定义如下: [] [pro

我正在尝试在我的帐户表单上填充一个字段,该字段显示帐户完成约会的最后实际结束日期。我的查询似乎完全符合我的要求。我使用该解决方案创建了我的查询,但我无法处理发生的情况,例如,如果帐户没有完成的活动,或者我创建了一个完全没有约会的新帐户

我试图在JavaScript的ExecuteQuery函数中测试返回到success方法的data.d.results值

当新创建帐户或帐户没有完成约会活动时,visual studio中即时窗口中的data.d.results定义如下:

[]

    [prototype]: []
我希望能够测试这种情况是否发生,然后防止尝试将实际结束日期值设置为字段

我的代码如下:

/// <reference path="JQuery.js" />
/// <reference path="SDK.REST.js" />
/// <reference path="json2.js" />
// function to set read only fields on form load
function HarrionAB_AccountForm_OnLoad() {
    debugger;
    var accountId = Xrm.Page.data.entity.getId().replace("{", "").replace("}", "");
    if (accountId != "") {
        RetrieveRecords(accountId);
    }
}

function RetrieveRecords(id) {

    // create the odata query
    var query = "/AppointmentSet?$select=*&$top=1&$orderby=ActualEnd desc&$filter=RegardingObjectId/Id eq guid'" + id + "' and StateCode/Value eq 1 and ActivityTypeCode eq 'appointment'";
    ExecuteQuery(query);
}

//
// ExecuteQuery executes the specified OData Query asyncronously
//
// NOTE: Requires JSON and jQuery libraries. Review this Microsoft MSDN article before 
//       using this script http://msdn.microsoft.com/en-us/library/gg328025.aspx
//
function ExecuteQuery(ODataQuery) {

    var serverUrl = Xrm.Page.context.getServerUrl();

    // Adjust URL for differences between on premise and online 
    if (serverUrl.match(/\/$/)) {
        serverUrl = serverUrl.substring(0, serverUrl.length - 1);
    }

    var ODataURL = serverUrl + "/XRMServices/2011/OrganizationData.svc" + ODataQuery;

    $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: ODataURL,
        beforeSend: function (XMLHttpRequest) {
            XMLHttpRequest.setRequestHeader("Accept", "application/json");
        },
        success: function (data, textStatus, XmlHttpRequest) {
            //
            // Handle result from successful execution
            //
            // e.g. data.d.results
            if (data.d.results != "[]") { // I NEED TO TEST HERE
                Xrm.Page.getAttribute("new_lastvisit").setValue(new Date(parseInt(data.d.results[0].ActualEnd.substr(6))));
            }
        },
        error: function (XmlHttpRequest, textStatus, errorObject) {
            //
            // Handle result from unsuccessful execution
            //
            alert("OData Execution Error Occurred");
        }
    });
}

//
// Error Handler
//
function ErrorHandler(XMLHttpRequest, textStatus, errorObject)
{ alert("Error Occurred : " + textStatus + ": " + JSON.parse(XMLHttpRequest.responseText).error.message.value); }
//
/// 
/// 
//函数设置窗体加载时的只读字段
函数HarrionAB_AccountForm_OnLoad(){
调试器;
var accountId=Xrm.Page.data.entity.getId().replace(“{”,“”)。replace(“}”,“”);
如果(帐户ID!=“”){
检索记录(accountId);
}
}
函数检索记录(id){
//创建odata查询
var query=“/AppointmentSet?$select=*&$top=1&$orderby=ACTUARLEND desc&$filter=RegardingObjectId/Id eq guid'+Id+”,状态代码/值eq 1和活动类型代码eq‘约会’;
执行(查询);
}
//
//ExecuteQuery异步执行指定的OData查询
//
//注意:需要JSON和jQuery库。请先查看此Microsoft MSDN文章
//使用此脚本http://msdn.microsoft.com/en-us/library/gg328025.aspx
//
函数执行程序(ODataQuery){
var serverUrl=Xrm.Page.context.getServerUrl();
//调整本地和在线URL之间的差异
if(serverUrl.match(/\/$/)){
serverUrl=serverUrl.substring(0,serverUrl.length-1);
}
var ODataURL=serverUrl+“/XRMServices/2011/OrganizationData.svc”+ODataQuery;
$.ajax({
键入:“获取”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
网址:Odataul,
beforeSend:函数(XMLHttpRequest){
setRequestHeader(“接受”、“应用程序/json”);
},
成功:函数(数据、textStatus、XmlHttpRequest){
//
//处理成功执行的结果
//
//例如,数据和结果
如果(data.d.results!=“[]”{//我需要在这里测试
Xrm.Page.getAttribute(“new_lastvisit”).setValue(新日期(parseInt(data.d.results[0].ActualEnd.substr(6));
}
},
错误:函数(XmlHttpRequest、textStatus、errorObject){
//
//处理执行失败的结果
//
警报(“发生OData执行错误”);
}
});
}
//
//错误处理程序
//
函数ErrorHandler(XMLHttpRequest、textStatus、errorObject)
{alert(“出现错误:“+textStatus+”:“+JSON.parse(XMLHttpRequest.responseText.Error.message.value);}

非常感谢您提供的任何帮助

该值是一个数组,因此您可以检查它是否包含以下值:

if (data.d.results.length > 0) {
    //Do whatever you need to in here
}

谢谢你的快速回复。我有一个后续问题。我是否可以使用查询返回的此值填充带有约会的查找控件,以便在表单上有直接链接?如果是这样的话,一个代码示例就好了。@ComicCoder在一个问题中发布两个不同的问题通常是个坏主意。只需将后续问题作为新问题发布即可。