完整版AJAX(网络不好时状况处理)
之前的AJAX在应用中有一个非常重要的问题,那就是如果用户网络不好的情况下,虽然没有刷新页面,会出现长时间数据展示等待的情况(点击按钮等后出现长时间数据没有展示的情况).这个时候需要用到AJAX的beforeSend事件和complete事件,目的是为了告诉用户,不是页面卡住了,而是数据正在加载,让耐心用户等待而不是乱点击操作出现不必要的问题.
$("#XG").live("click", function () { var a = $(this).attr("class"); $.ajax({ url: "updata1.ashx", data: { "ids": a }, type: "post", dataType: "json", success: function (m) { $("#tids").val(m[0].ids); $("#tname").val(m[0].name); if (m[0].sex == 'True') $("#tsex").children("input:eq(0)").get(0).checked = true; else $("#tsex").children("input:eq(1)").get(0).checked = true; $("#tbirthday").val(m[0].birthday); $("#DropDownList1").val(m[0].nation); $("#DropDownList2").val(m[0].class); $("#tscore").val(m[0].score); }, error: function () { alert("数据错误!"); }, beforeSend: function () { $("#waiting").css("display", "block"); },//在接收到数据之前会执行 complete: function () { //接收到数据后会执行这个 $("#waiting").css("display", "none"); $("#tc").animate({ top: 100 }, 500); $("#tc-zz").css("display", "block"); } }); });
这样这个点击事件在没有返回数据之前会一直出现一个等待界面,在接收到数据后等待界面消失,执行后面的操作