Javascript 回调函数返回值

Javascript 回调函数返回值,javascript,ajax,Javascript,Ajax,如何使用回调函数返回表单验证的值?这对我不起作用 <form action="loggedin.php" onsubmit="return test(valid)" method="post"> function test(callback) { var k = ""; var httpRequest = new XMLHttpRequest(); httpRequest.onload = function(){ k = callback(h

如何使用回调函数返回表单验证的值?这对我不起作用

<form action="loggedin.php" onsubmit="return test(valid)" method="post">

function test(callback) {
    var k = "";
    var httpRequest = new XMLHttpRequest();
    httpRequest.onload = function(){
        k = callback(httpRequest.responseText);
        return k;
    };
    httpRequest.open("POST", "check.php",true);
    var a = document.getElementById("email").value;
    var b = document.getElementById("pwd").value;
    httpRequest.send("email=" + a + "&passwd=" + b);
}

function valid(resp){
    alert(resp);    // resp is correctly defined here
        if(resp == "Correct"){
            return true;
        }
        else{
            return false;
        }
} 

函数测试(回调){
var k=“”;
var httpRequest=new XMLHttpRequest();
httpRequest.onload=函数(){
k=回调(httpRequest.responseText);
返回k;
};
open(“POST”,“check.php”,true);
var a=document.getElementById(“电子邮件”).value;
var b=document.getElementById(“pwd”).value;
httpRequest.send(“email=“+a+”&passwd=“+b”);
}
功能有效(resp){
警报(resp);//此处正确定义了resp
如果(响应=“正确”){
返回true;
}
否则{
返回false;
}
} 

我需要使用ajax响应验证表单数据。。我想返回true或false以形成onsubmit方法。。回调函数能返回值吗?

AJAX将异步请求发送到所需的位置,这意味着它独立于之后的程序运行。AJAX回调函数的目的是在返回页面时应用返回的内容,因此它不能将值返回到调用它的原始形式

为了减少php文件的使用,可以将check和loggedin文件结合起来,或者清除onsubmit并将其保持为常规HTML表单提交,或者继续使用ajax

无论哪种方式,对代码的更新都会在返回第一个ajax后触发loggedin.php

<form action="loggedin.php" onsubmit="return test(valid)" method="post">

function test(callback) {
    var k = "";
    var httpRequest = new XMLHttpRequest();
    httpRequest.onload = function(){
        k = callback(httpRequest.responseText);
        return k;
    };
    httpRequest.open("POST", "check.php",true);
    var a = document.getElementById("email").value;
    var b = document.getElementById("pwd").value;
    httpRequest.send("email=" + a + "&passwd=" + b);
}

function valid(resp){
    alert(resp);    // resp is correctly defined here
        if(resp == "Correct"){
            var httpRequest = new XMLHttpRequest();
            httpRequest.onload = function(){
                // do what needs to be done to the page, like reload
            }
            httpRequest.open("POST", "loggedin.php", true);

            // this is just using the variables from earlier
            var a = document.getElementById("email").value;
            var b = document.getElementById("pwd").value;
            httpRequest.send("email="+ a +"&passwd="+ b);
        }
        else{
            return false;
        }
} 

函数测试(回调){
var k=“”;
var httpRequest=new XMLHttpRequest();
httpRequest.onload=函数(){
k=回调(httpRequest.responseText);
返回k;
};
open(“POST”,“check.php”,true);
var a=document.getElementById(“电子邮件”).value;
var b=document.getElementById(“pwd”).value;
httpRequest.send(“email=“+a+”&passwd=“+b”);
}
功能有效(resp){
警报(resp);//此处正确定义了resp
如果(响应=“正确”){
var httpRequest=new XMLHttpRequest();
httpRequest.onload=函数(){
//对页面执行需要执行的操作,如重新加载
}
open(“POST”,“loggedin.php”,true);
//这只是使用前面的变量
var a=document.getElementById(“电子邮件”).value;
var b=document.getElementById(“pwd”).value;
httpRequest.send(“email=“+a+”&passwd=“+b”);
}
否则{
返回false;
}
} 

所以在提交表单时,您需要验证?您可以使用jquery在ajax中使用success,不是吗?是的,但我正在尝试使用javascript进行回调..所以您需要执行回调而不是ajax success?/在有效函数上,您是否获得响应