这似乎很愚蠢,我无法做到这一点。我正在使用网络上的通用代码来执行 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服务。