这是我在做异步更新的时候遇到的问题,平台是VS2008 - ASP.NET,下面代码是ajax异步更新的主要部分,代码我先稍加说明:
<div id="pop_inner">这个div是显示数据的地方,在发送过程中加载loading图片;
<div class="sub"> 这个div是个马甲,用来装饰上面的div,并且通过控制这个div的显隐达到二级菜单的目的。
一下是代码:$("#pop_inner").ajaxSend(function(){
            $(this).html(" <img src='images/loading.gif' style='margin-left:20px;' />");
            return;
        })
       function show(){
                var submenu = $(".sub");
                submenu.css({
                    'top':((_Br=="msie")||(_Ver==6))? this.offsetTop+150:this.offsetTop,
                    'left':((_Br=="msie")||(_Ver==6))? $(".links").width()-15:$(".links").width(),
                    'display':'block'                
                });
                $.get("handlexcute/allservices.ashx?para="+encodeURIComponent("getsubservice_房产"),function(data){
                    $("#pop_inner").html(data);
                })
                
        }
        $(".links .body ul li a").each(function(){
            this.onmouseover=show
        })
        
我遇到的问题很是奇怪,整个工程我放在VS平台上直接按F5运行,很正常,但是放在IIS里,通过浏览器访问就出问题了,那个叫“pop_inner”的div里的图片一直不消失。由于在VS上运行是正常的,所以我不能确定问题出在哪儿,请各位帮忙看看……

解决方案 »

  1.   

    第一 检查你回调函数是否成功第二 检查下你的ajax是否重复触发
      

  2.   

    你要检查你的程序是否访问了正确的后台地址。
    在VS中F5运行,系统会自动提供给你一个配置好的环境,文件路径自然没有问题。
    如果JS运行正确,说明代码就确实没有问题。
    而放在IIS下,你的问题是图片不消失,从你的代码看应该是没有得到回调,所以回调代码未能正常运行,你在回调函数里面放个alert实验一下,应该是没有一起运行的。
    如果能确认这一点,你就要检查一下你的JS代码访问的后台的路径了。而且也要确认一下后台代码是否正常运行。
      

  3.   

    最好的办法就是一步一步alert 2008的js是能调试的噢
      

  4.   

    我快疯了,方在VS里我调试,一点问题没有直接用IIS预览,                $.get("handlexcute/allservices.ashx?para="+encodeURIComponent("getsubservice_房产"),function(data){
                        $("#pop_inner").html(data);
                    })alert("")加在它前后都能有提醒,但加这之间就没有用。路径也没错啊,可以确认的是后台没又运行,因为后台的处理函数,只要处理就有数据输出的,后台代码我也贴一下:
    ///////////////////////////using System;
    using System.Web;
    using DataAccess;public class Handler : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
            
            context.Response.ContentType = "text/plain";
            //System.Text.StringBuilder = new System.Text.StringBuilder();
            string[] key_value = context.Request.QueryString["para"].ToString().Split('_');
            switch (key_value[0])
            {
                case "getsubservice":                DbHelper db = new DbHelper();
                    db.AddParameter("@name", key_value[1]);
                    System.Data.Common.DbDataReader dr = db.ExecuteReader("GetSubNamesByName",System.Data.CommandType.StoredProcedure);
                    if (dr.HasRows)
                    {
                        context.Response.Write("<ul>");
                        while (dr.Read())
                        {
                            context.Response.Write("<li><a href='javascript:return false'>" + dr["name"].ToString() + "</a></li>");
                        }
                        context.Response.Write("</ul>");                }
                    break;
                default: 
                    context.Response.Write("没有数据");
                    break;
            }
        }
     
        public bool IsReusable {
            get {
                return true;
            }
        }}这种怪事……