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