ajax值未返回

时间:2013-06-06 20:17:11

标签: javascript ajax

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已经存在,它不应该让用户提交表单,但我无法在验证电子邮件功能中获得价值...它给了我未定义的值。

3 个答案:

答案 0 :(得分: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);
        }
    });
}

答案 1 :(得分:1)

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

答案 2 :(得分: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;
}

这会有效,但我 高度 建议不要这样做! {AJ}请求完成后,async: false将使浏览器锁定并且不响应任何输入。

您应该做的是丢失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);
            }
        }
    });
}