在首页 index.aspx中 传值到-------->flightlist.aspx中,
flightlist.aspx将获取index.aspx传过来的值,然后通过$.ajax()读取数据并显示。
而现在要达到的效果是在 flightlist.aspx读取数据延迟这段期间,页面跳转到《提示页面》“正在加载……”。数据读取完毕后回到flightlist.aspx页面并显示数据。
我现在的做法是 在ajax()读取数据前,通过ajaxStart()跳转到<提示页面>,通过ajaxComplete()来判断是否读取完毕,若读取完毕就跳转到flightlist.aspx页面
各位大虾的方法都不错,给我加深了理解。基本的方法都是一样的……
问题已经解决,通俗一点说就是用了遮罩的效果
//查询航班
$("#waiting").ajaxStart(function() {
// $(this).html("<img src='../images/Flight/images/loading_16x16.gif'/>正在查询,请稍候...");
$("#pageA").css("display", "none");
$("#pageB").css("display", "block");
});
$("#waiting").ajaxComplete(function(event, request, settings) {
// $(this).html("机票查询结果");
$("#pageA").css("display", "block");
$("#pageB").css("display", "none");
});
$.ajax({
url: 'xxx',
type: 'POST',
data: { depcity: depcity, aircity: arrcity, flightdate: d1, airco: airco },
dataType: 'xml',
timeout: 30000,
error: function(o) {
if (o.readyState == 0)
alert("查询超时");
else
alert(o.responseText);
},
success: showFlight
});
function showFlight()
{
//....实体
}
希望各位大虾能说说心得,加深理解。月底再给各位统一给分啦,谢谢!
alert('ajax前执行');
$.ajax({
url: "test.html",
cache: false,
success: function(html){
alert('ajax执行成功执行');
}
});
把这个 “《提示页面》“正在加载……”。” 用一个层放到flightlist.asph就行了嘛
例如:
$(function(){
//在这里用层显示 ’正在加载‘
//读取数据
$.ajax(
//```
success:function(msg)
{
//把层给隐藏或移除了
//加载数据
}
);
});
关于跳转:如果楼主跳转的意思是到页面B去的话那么不管page a 怎么做都是没用的不管是ajax还是什么的,因为http是无状态的协议,不建议楼主使用这种方式。如果只是在page a 上请求page b(这里page b 一般作为一个服务专门返回提示窗口如Loading),那么也是不存在跳转的。
关注下
嗯?需要这样么?
$.ajax 不是有方法是beforeSend么?在这个方法里面写上Loading的js代码,Success或者complete中写上关闭loading的代码就可以了