Возвращаемое значение функции обратного вызова

-1

Как вернуть значение для проверки формы с помощью функции обратного вызова? Это не работает для меня.

<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;
        }
} 

Мне нужно проверить данные формы с помощью ответа ajax. Я хочу вернуть true или false для формирования метода onsubmit. Может ли функция обратного вызова возвращать значение?

  • 0
    поэтому при отправке формы вам нужно подтвердить?
  • 0
    Вы можете использовать успех в AJAX с помощью JQuery не так ли?
Показать ещё 7 комментариев
Теги:

1 ответ

0

AJAX отправляет асинхронный запрос в нужное место, то есть он запускается независимо от программы после этого. Цель функции обратного вызова от AJAX - применить то, что возвращается на страницу, когда оно возвращается, поэтому оно не может вернуть значение в исходную форму, из которой она была вызвана.

Что-то, что вы можете сделать, чтобы сократить файлы php, - это объединить файлы проверки и регистрации, а также очистить onsubmit и сохранить его в виде обычной формы HTML или продолжить использование ajax.

В любом случае, обновление вашего кода, который будет запускать loggedin.php после первого 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(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;
        }
} 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню