代码如下,GetCallbackEventReference的最后一个参数,不管我填写true,还是false,都是异步执行的,到底应该怎样让它同步执行:        var flg;
        function CallServer(){
            var arg = document.getElementById("txt1").value;
            <%=ClientScript.GetCallbackEventReference(this, "arg", "JsRecieve", null, null, false) %>
        }
        
        function JsRecieve(ret){
            if(ret == "0")
                flg = true; 
            else
                flg = false;
        }        function SubmitCheck(){
            CallServer();
            alert(flg);// 第一运行,这里总是undefined
            if(flg){
                alert("已经存在");
                return false;
            }
            return true;
        }

解决方案 »

  1.   

    页面继承ICallbackEventHandler 并实现其两个方法了吗?
      

  2.   

    当然实现了,实际上只有第一次alert,才会弹出undefined
    之后就有值了。
      

  3.   

    SubmitCheck是在什么时候执行的?
      

  4.   

    后台代码如下:
    public string GetCallbackResult()
    {
      return "0";
    }
    public void RaiseCallbackEvent(string eventArgument)
    {
    }前台代码如下:
    <script type="text/javscript">
    var flg;
    function CallServer(){
        var arg = "abc";
        <%=ClientScript.GetCallbackEventReference(this, "arg", "JsRecieve", null, null, false) %>
    }
    function JsRecieve(ret){
        if(ret == "0")
            flg = true; 
        else
            flg = false;
    }
    function SubmitCheck(){
        CallServer();
        alert(flg);// 第一次运行,这里总是undefined
    }
    </script>
    <form runat="server">
        <input type="button" onclick="SubmitCheck();" value="test">
    第一次点击这个按钮,弹出undefined;<br>
    第二次点击就弹出true
    </form>
      

  5.   

    客户端在调用CallServer()后用不服务器返回立即执行下一步,所以肯定是undefined