代码之家  ›  专栏  ›  技术社区  ›  nathaniel

在Firefox中,ASP.NET 2.0回调无法正常工作

  •  2
  • nathaniel  · 技术社区  · 16 年前

    function ReceiveServerData(args, context)
    {
    document.getElementById(context).style.zIndex = 300;
    document.getElementById(context).style.visibility = 'visible';
    document.getElementById(context).innerHTML = args;
    fixHover(context);
    }
    

    在Firefox中,“args”始终是相同的数据,因此 <div> 这是我的下拉列表的显示,总是显示相同的项目。我已经仔细检查了我的客户端代码,正确的信息正在发送给客户端-服务器和返回服务器-客户端。

    if (setRequestHeaderMethodExists) {
    xmlRequest.onreadystatechange = WebForm_CallbackComplete;
    callback.xmlRequest = xmlRequest;
    xmlRequest.open("POST", theForm.action, true);
    xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlRequest.send(postData);
    return;
    }
    

    回调函数ReceiveServerData在 xmlRequest.open("POST", theForm.action, true); xmlRequest.send(postData); . 我不知道这是否会导致错误,但我的调试技能已经到了极限。

    编辑后添加——ReceiveServerData在我第一次使用下拉列表时不会被调用两次——事实上,下拉列表在第一次按键时工作正常。在第一次击键之后,它停止工作,并使用旧的返回数据加倍回调。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Community CDub    7 年前

    值得一提的是,MS AJAX函数.createCallback()在FireFox中似乎无法正常工作。请看这里的帖子,带有重新编码:

    Function.createCallback doesn't pass context correctly in FireFox

    当上下文变量传递给回调函数时,它似乎失去了状态。

        2
  •  0
  •   Atanas Korchev    16 年前

    我不确定这是否有用,但我已经修补了这样的ASP.NET 2.0回调(缩小代码):

    function WebForm_CallbackComplete()
    {
        for(var i=0; i< __pendingCallbacks.length;i++)
        {
            var _f3=__pendingCallbacks[i];
            if(_f3 && _f3.xmlRequest && (_f3.xmlRequest.readyState==4))
            {
                __pendingCallbacks[i]=null;
                WebForm_ExecuteCallback(_f3);
                if(!_f3.async)
                {
                    __synchronousCallBackIndex=-1;
                }
                var _f4="__CALLBACKFRAME"+i;
                var _f5=document.getElementById(_f4);
                if(_f5)
                {
                    _f5.parentNode.removeChild(_f5);
                }
            }
        }
    }
    

    如果检查WebForm_CallbackComplete的实际实现,您会发现一些问题。您可以尝试将该JavaScript粘贴到表单标记中,看看它是否会产生影响。

        3
  •  0
  •   Brendan Kowitz    16 年前

    我认为你需要提供更多的信息,这个问题可能不太可能是因为asp.net内置的js。如何设置事件以捕捉击键,是否意外添加了事件?如何调用脚本服务?只要仔细检查所有的基础知识,确保它不是那种疯狂和简单的东西。