ajax提交表单不成功

有一个注册表单,在点注册按钮后验证提交(验证通过后,ajax提交表单),我对ajax不怎么会,找了大量资源,弄出来的,我自己都看不懂,算了,还是上代码:

r_sub.addEventListener("click", function() {//提交按钮

        var l_form = document.getElementById("l_form");//获取表单
        if(requ() == "false") {//验证方法返回值
            alert(false);
        } else {

// l_form.submit();//以前的提交方式

            onreadystatechange();//ajax(这里错了,控制台报错未定义)
        }
    })

    function requ() {//验证方法
        ...//验证表单项,并返回值
    }

    var request;//这里开始,是网上的demo.
    if (window.XMLHttpRequest) {//网上说的标准和IE混合写法
        request = new XMLHttpRequest();
    } else {
        request = new ActiveXObject('Microsoft.XMLHTTP');
    }
    function success(text) {//这个不知道是什么方法
        var textarea = document.getElementById('l_form');//这个obj我改成我的表单id
        textarea.value = text;
    }

    function fail(code) {//这个不知道是什么方法
            var textarea = document.getElementById('l_form');//这个obj我该成我的表单id
        textarea.value = 'Error code: ' + code;
    }

// var request = new ActiveXObject('Microsoft.XMLHTTP'); // 新建Microsoft.XMLHTTP对象

    request.onreadystatechange = function () { // 状态发生变化时,函数被回调
        if (request.readyState === 4) { // 成功完成
    // 判断响应结果:
            if (request.status === 200) {
            // 成功,通过responseText拿到响应的文本:
                return success(request.responseText);
            } else {
        // 失败,根据响应码判断失败原因:
                    return fail(request.status);
            }
        } else {
    // HTTP请求还在继续...
        }
    }

// 发送请求:

    request.open('post', "register");//这个url是我框架弄成这样的,想直接提交到本页面,不过还是没效果
    request.send();

总之,就是上面这一坨什么东西,因为直接submit方法需要跳转页面(不跳转也需要有结果能显示在页面上),用户在注册后,表单提交,并返回提交结果(我的想法是submit到控制器,然后控制器再把数据存入数据库),并将结果显示到页面上(这两步还未实现,只希望先实现ajax异步提交注册表单就可以了),希望看官能帮忙捋顺一下,或者帮忙实现一下,最好加上相应的步骤注释,方便某研究学习

阅读 3.5k
1 个回答
if(requ() == "false") {//验证方法返回值
    alert(false);
    return ; // 验证不正确时,返回,不在走下面代码,发ajax
} 
// else中的代码没有必要写。而且onreadystatechange函数你是放在request.onreadystatechange,不是
// var onreadystatechange = function(){...}
/*else { 
    onreadystatechange();//ajax(这里错了,控制台报错未定义)
}*/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题