是否可以从GLOBAL.ASAX调用Web服务并将“data”json结构存储在“全局”结构变量中?
问题描述:
我们在一个.Net页面上创建了5个AJAX调用(例如下面的那个),为了加快一点,我们 想将这些调用中的一部分移动到Global.asax。是否可以从Application_Start事件调用它? 另外,如何将“数据”结构存储在“全局”变量中,以便我可以遍历数据json结构 以便填充下面的我的下拉框“jqStatusID”?是否可以从GLOBAL.ASAX调用Web服务并将“data”json结构存储在“全局”结构变量中?
function GetStatusList(async) {
$.ajax
({
async: async
, url: "svc/Job.svc/JobView/GetStatusList"
, cache: false
, dataType: "json"
, error: function (jqXHR, textStatus, errorThrown) { }
, success: function (data, textStatus, jqXHR) {
$.each(data, function (key, value) {
JobInstanceStatus[JobInstanceStatus.length] = {
StatusID : value.StatusID,
Name : value.Name
};
$(jqStatusID).append($("<option></option>").attr("value", value.StatusID).text(value.Name));
});
$(jqStatusID).multiselect('refresh');
}
});
}
谢谢
答
首先,jQuery是一个客户端技术,因此不能在服务器端使用。其次,为什么要向您自己的服务器发送AJAX请求?您可以直接访问数据并缓存它。
如果您想在Application_Start
中提出请求,那么它可能是应用程序范围的数据,而不是用户特定的。在这种情况下,您应该使用Cache
而不是会话。
如果您想要并行拨打电话,则可以使用Task Parallel Library
来查找服务器端的异步呼叫,这对您所描述的情况会更好。
对不起我的意思是从Global.asax调用同一个Web服务,并找到一种方法来存储json数据结构。所以你建议使用CACHE?我会仔细研究一下。谢谢 – Max
你可以通过'HttpClient'或'WebClient'调用同一个web服务,但ajax是一种客户端技术,你应该在服务器端使用一些东西。缓存是要走的路,如果你想分享数据的话,应用程序的所有客户端。 –
我在这里找到了我所需要的:http://code.google.com/p/ajax-cache/wiki/HowTo - 这可能是代码更改较少的最佳方式....我将调查.Net缓存选项以及 - 再次感谢。 – Max