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

时间:2014-02-11 23:27:31

标签: javascript odata

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

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

给定here的示例有两个显示数据的警报。 Id和Name如何在该函数之外使用?

Edit1:下面是调用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;
    }
}

1 个答案:

答案 0 :(得分:0)

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

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