我有一个注册的按钮。是服务器控件,
<asp:Button ID="btnRegist" runat="server" Text="提交" OnClientClick="return CheckAll()" onclick="btnRegist_Click" />在CheckAll()方法中有一个请求,验证验证码是否正确
 $.post("/Post/Vaildate.ashx", {code:""}, function (data) {//代码略 });为什么这个post请求不执行。我监视看了,返回500,这是什么原因呢。会的帮我解决下。谢谢OnClientClick

解决方案 »

  1.   

    500一般是服务器内部错误,就是说Post/Vaildate.ashx在处理时有问题
    是否有做{code:""} string.Empty判断
    JS调试一下
      

  2.   

    第一,是否路径错了
    第二,你这样写即使路径不错也是不可以的,因为是异步调用。要把异步改成同步。
    不要用$.post 方法 用 $.ajax 方法修改  async 为 false 这样才可以
      

  3.   

    /Post/Vaildate.ashx里面出错了,可以设置断点跟踪一下。
      

  4.   

    异步执行出错,你要输出什么可以先直接请求/Post/Vaildate.ashx 看看输出什么,就别调ajax了
    什么时候,你的/Post/Vaildate.ashx 输出正确了,ajax也就没问题了
      

  5.   

    请求都不执行呢。没执行到Vaildate.ashx里面去
      

  6.   

    你是说OnClientClick这个事件不能执行异步是吗。
      

  7.   

    是可以用的异步的,但是没有意义
    比如说function Cheakall()
    {
       var b=true;
       $.post("yourPath",function(){
           var b=flase;
       });
       //这里应为是异步请求,所以没有等到b=flase;就会直接执行return b;直接返回b
       //要不把 return b 写入 post 的 function 里面
       return b;
    }请求都不执行呢。没执行到Vaildate.ashx里面去 
    如果路径没有错误,试一下把原来的 Vaildate.ashx 删了,再重新重建一个
    我都试过不知道什么原因不行,删了重新建立就可以了
      

  8.   


    嗯咯。我就这样做的。Cheakall() 里面有一个请求,但我的删除重新建一个,一样的不行。最后用之前的代码解决的。这里标记true是异步执行。但我就想知道这个post不执行的原因是什么 /********Ajax Frame*******/
    var xmlHttp;
    function CreateXMLHttpRequest()
    {
        if (window.ActiveXObject)
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        else if (window.XMLHttpRequest)
            xmlHttp = new XMLHttpRequest();
    }
    function StartRequest(action,url,optmethod,syn)
    {
        if (action!='GET' && action!='POST')
            action = 'GET';
        CreateXMLHttpRequest();
        xmlHttp.onreadystatechange = optmethod;
        xmlHttp.open(action, url, syn);
        xmlHttp.send(null);
    }
    function HandleState()
    {
        return (xmlHttp.readyState == 4 && xmlHttp.status == 200)
    }
    function GetResponseText()
    {
        return xmlHttp.responseText;
    }
    function ShowVcodeCheck()
    {
        if (HandleState())
        {
            var d = gid('d_vcode');
            var ser = GetResponseText();
            if (ser == '')
            {
                d.innerHTML = img_err + nullcode_msg;
                d.className= 'd_err';
            }
            else if (ser == gid("txtValidateCode").value.toUpperCase())
            {
                codeIsTrue=true; //在标记验证码正确 在Cheakall()可以判断。错误就返回false
                d.innerHTML = img_ok + okcode_msg;
                d.className= 'd_ok';
            }
            else
            {
                codeIsTrue=false; //标记验证码不正确
                d.innerHTML = img_err + errvcode_msg;
                d.className= 'd_err';
            }
        }