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



这似乎很愚蠢,我无法做到这一点。我正在使用网络上的通用代码来执行 odata 查询。问题是结果保留在getFieldData(retrieveReq)例程中。我不想立即在当前表单上设置字段。如何从中获取我的值,以便数据可以在其他 JavaScript 函数中使用?全局变量会很好,但我尝试过的一切都不起作用。下面的代码显示"x"。

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

此处给出的示例有两个显示数据的警报。Id 和 Name 如何才能超出该函数才有用?

编辑1:下面是调用getFieldData(this)的例程的主要部分。我想在其他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;
    }
}

我想你想把数据作为javascript函数的返回值。你可以这样做:var 返回数据 = 函数 getFieldData(检索Req){...返回数据;}

顺便说一句,您可以考虑在客户端应用程序中使用JayData,Breeze和Datajs源代码包。他们实现了低级API,用于使用javascript使用odata服务。