日期:2014-05-20  浏览次数:20478 次

ASP.NET 开发AJAX的问题
我用的是ajaxpro.2.dll
function   showcalendar(year,month,bid)
{
        var   calendar   =   document.getElementById( "calendar ");  
        var   temp   =   PublicFunction.Calendar(year,month,bid).value;
        calendar.innerHTML   =   temp;
}
这个是我页面上调用的函数

我发现,要是PublicFunction.Calendar这个方法里面加个Thread.Sleep(5000);
那么浏览器就会死5秒,是不是说这个方法没完成,页面的其他部分就不显示?

有没有办法这个方法还没有返回值的时候显示一个Loading,页面其他地方的内容照常显示(其他地方页有类似的异步调用方法)?

希望高手帮帮忙

------解决方案--------------------
function showcalendar(year,month,bid)
{
var calendar = document.getElementById( "calendar ");
var temp = PublicFunction.Calendar(year,month,bid).value;
calendar.innerHTML = temp;
}
====>
function showcalendar(year,month,bid){
PublicFunction.Calendar(year,month,bid,showcalendarcallback)
}

function showcalendarcallback(res){
var calendar = document.getElementById( "calendar ");
calendar.innerHTML = res.value;
}
------解决方案--------------------
我没有用过你那种Ajax。

一般来说你需要查看你的Ajax框架自动产生javascript代码,找到xmlhttprequest请求部分,把同步访问变为一步访问(通常是把一个单词false变为true即可),然后再把这个请求的前边增加一个显示(style.display= 'inline ')一个div的语句,在获得返回的地方再把这个div隐藏。

不过javascript是很低级和杂乱无章的运行平台,它对线程、内存管理等及其不可靠,多线程一步处理会令javascript执行混乱、内存溢出,大多数ajax默认都是以同步方式请求服务器的。