Javascript 未返回ajax值
get_email.jsp:Javascript 未返回ajax值,javascript,ajax,Javascript,Ajax,get_email.jsp: function validateEmail(){ var check =email(); alert(check); } function email() { var TCode = document.getElementById('email').value; var result="hey"; $.ajax({ type: "POST", async: false,
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;
}
});
}
可用
无法使用的
注意:我的AJAX函数是同步的
现在从函数验证电子邮件我调用一个函数电子邮件,在这里我调用一个jsp页面,在那里我检查数据库中的电子邮件是否已经存在,从那里我返回显示在我的页面上的文本,但我想要的是,我从这个ajax函数得到一些值,如果电子邮件id已经存在,它不应该让用户提交表单,但我无法在validate email函数中获取值…它给了我未定义的值。您将需要添加一个回调,即使您正在使用同步请求,返回函数也将未定义
<%@ 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处理放在
success
回调中。从success
函数返回什么都不做。这不会神奇地使电子邮件返回值
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);
}
});
}
您需要通过将return
移动到回调外部,使email
返回值
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);
}
});
}
这会起作用,但我强烈建议不要这样做async:false
将使浏览器锁定,并且在AJAX请求完成之前不会响应任何输入
您应该做的是丢失async:false
,然后使用回调。注意,您可能需要更改程序逻辑。您不应该从AJAX调用返回
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;
}
请发布服务器端代码移动返回结果代码>退出回调。@Rocket Hazmat…那么我应该把它放在哪里?@RocketHazmat after ajax函数还是success函数?@user2137186:after$。ajax
,你不能把它放在success
之后,这毫无意义。它会提醒[object,object now]do result=html而不是result=$(“#email#info”).html(html);在成功函数中,他设置了async:false,所以应该是synchronousWell我会被诅咒的。。。你说得对。考虑到函数的名称,我从未考虑过这是一个选项!我认为,回拨答案站得住脚:)