0
function validateEmail(){
    var check =email();
    alert(check);    
}
function email()
{
    var TCode = document.getElementById('email').value;
    var result="hey";
    $.ajax({
        type: "POST",
        async: false,
        url: "get_email.jsp",
        data: "email="+TCode,
        success: function(html){
            $("#email_info").html(html);
            result=$("#email_info").html(html);
            return result;
        }
    });
}

get_email.jsp:

<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="bean.*" %>
<%@ page import="database.*" %>


<%  

                                                int flag=0;
                                                String Email=request.getParameter("email");
                                                userDAO UD=new userDAO();
                                                flag=UD.getEmailInfo(Email);
                                                if(flag==1)
                                                {
                                                    %>
                                                 Available
                                                <% }
                                                else
                                                {%>Not Available
                                            <%}%>

注意:我的 AJAX 功能是同步的

现在从函数验证电子邮件我正在调用一个函数电子邮件,我调用一个jsp页面,在那里我检查数据库中的电子邮件是否已经存在,我从那里返回显示在我的页面上的文本,但我想要的是我得到一些这个 ajax 函数的值以及如果电子邮件 ID 已经存在,它不应该让用户提交表单,但我无法在验证电子邮件函数中获得值......它给了我未定义的值。

4

3 回答 3

1

您将需要添加一个回调,即使您正在使用同步请求,返回函数也将是未定义的。

function validateEmail(){
    email(function(check){
        alert(check)
    });
}
function email(callback)
{
    var TCode = document.getElementById('email').value;
    var result="hey";
    $.ajax({
        type: "POST",
        async: false,
        url: "get_email.jsp",
        data: "email="+TCode,
        success: function(html){
            $("#email_info").html(html);
            result=$("#email_info").html(html);
            callback(result);
        }
    });
}
于 2013-06-06T20:25:05.603 回答
1

将所有后 ajax 处理放在success回调中。

于 2013-06-06T20:26:02.727 回答
0

success函数返回什么都不做。这并不神奇地使email返回值。

您需要email通过移动return回调的外部来返回值。

function email()
{
    var TCode = document.getElementById('email').value;
    var result="hey";
    $.ajax({
        type: "POST",
        async: false,
        url: "get_email.jsp",
        data: "email="+TCode,
        success: function(html){
            $("#email_info").html(html);
            result = html;  // Don't set this to a jQuery object
        }
    });

    return result;
}

这会起作用,但我强烈建议不要这样做! async: false将使浏览器锁定并且在 AJAX 请求完成之前不响应任何输入。

您应该做的是丢失async: false, 并使用回调。请注意,您可能需要更改程序逻辑。您不应该从 AJAX 调用中返回。

function validateEmail(){
    email(function(check){
        console.log(check);
    });
}
function email()
{
    var TCode = document.getElementById('email').value;
    var result="hey";
    $.ajax({
        type: "POST",
        async: false,
        url: "get_email.jsp",
        data: "email="+TCode,
        success: function(html){
            $("#email_info").html(html);

            if(typeof callback === 'function'){
                callback(html);
            }
        }
    });
}
于 2013-06-06T20:30:30.963 回答