简体   繁体   English

如何从CRM 2011 javascript odata函数返回数据?

[英]How to return data from CRM 2011 javascript odata function?

This seems silly that I haven't been able to accomplish this. 我还没做到这一点,这似乎很愚蠢。 I'm using the common code found on the web to do an odata query. 我正在使用网上常见的代码来进行odata查询。 The problem is the results stay in getFieldData(retrieveReq) routine. 问题是结果保留在getFieldData(retrieveReq)例程中。 I don't want to immediately set a field on the current form. 我不想立即在当前表单上设置一个字段。 How can I get my values out of it so the data can be used in other javascript functions? 如何从中获取价值,以便可以在其他javascript函数中使用数据? Global variable would be good but nothing I've tried has worked. 全局变量会很好,但是我尝试过的任何方法都没有用。 The below code displays "x". 下面的代码显示“ x”。

var var1 = "x"; odataquery(); alert(var1);

The example given here has two alerts that display the data. 此处给出的示例有两个显示数据的警报。 How can Id and Name get outside of that function to be useful? Id和Name如何才能超出该功能的范围?

Edit1: Below is the main part of the routine that calls getFieldData(this). Edit1:下面是调用getFieldData(this)的例程的主要部分。 I want to use OwnerBUID and OwnerBUName in other javascript functions. 我想在其他JavaScript函数中使用OwnerBUID和OwnerBUName。

    var retrieveReq = new XMLHttpRequest();
    retrieveReq.open("GET", odataSelect, false);
    retrieveReq.setRequestHeader("Accept", "application/json");
    retrieveReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    retrieveReq.onreadystatechange = function () {
        getFieldData(this);
    };
    retrieveReq.send();

function getFieldData(retrieveReq) {
    if (retrieveReq.readyState == 4 && retrieveReq.status == 200) {  
        // 4=request complete, 200=OK
        var retrieved = this.parent.JSON.parse(retrieveReq.responseText).d;
        var retrievedValue = retrieved.results[0].BusinessUnitId;
        OwnerBUID = retrievedValue.Id;
        OwnerBUName = retrievedValue.Name;
    }
}

I guess you want to put the data as the return value of a javascript function. 我猜您想将数据作为javascript函数的返回值。 You could do this: var returnedData = function getFieldData(retrieveReq) { ... return data; 您可以执行以下操作:var returnData = function getFieldData(retrieveReq){...返回数据; } }

BTW, you could consider to use JayData, Breeze and Datajs sources code packages in your client application. 顺便说一句,您可以考虑在客户端应用程序中使用JayData,Breeze和Datajs源代码包。 They implement the low level APIs for consuming an odata service using javascript. 他们使用JavaScript使用低级API来使用odata服务。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM