我使用以下方法来调用 php:
function validateEmaiAjax(email){
val = null;
$("#warning").load("https://localhost/Continental%20Tourism/register_ajax.php",{email: email}, function(rspns, stat, xml){
val = rspns;
});
if(val == ".")
return true;
else {
return false;
}
}
我的PHP代码是:
<?php
$dbc = mysqli_connect("localhost","root","pass","continental_tourism") OR die(mysqli_connect_error());
$email = $_REQUEST['email'];
$query = "SELECT email FROM customer_info WHERE email = '$email' ";
$r = mysqli_query($dbc, $query) OR die(mysqli_error($dbc));
if(mysqli_num_rows($r) > 0)
echo "Email address exists!";
else
echo ".";
?>
基本上,这会检查数据库,如果电子邮件存在,则会显示“电子邮件地址存在!”如果没有我想return true
(所以我回显“.”并进行比较)。奇怪的是,如果我在附近使用 firebug 放置一个断点if(val == ".")
程序正确运行并返回 true。如果我删除该断点函数总是返回 false。我不明白为什么会发生这种情况。请帮忙!谢谢。
您遇到此问题的原因是因为您执行了异步要求。这意味着if(rspns == ".")
将在收到服务器响应之前到达,并且结果将始终是false
.
为了将此代码包装在返回布尔值并且不需要回调函数(阻塞过程)的函数中,您将需要使用同步请求:
function validateEmaiAjax(email) {
// This is the correct way to initialise a variable with no value in a function
var val;
// Make a synchronous HTTP request
$.ajax({
url: "https://localhost/Continental%20Tourism/register_ajax.php",
async: false,
data: {
email: email
},
success: function(response) {
// Update the DOM and send response data back to parent function
$("#warning").html(response);
val = response;
}
});
// Now this will work
if(val == ".") {
return true;
} else {
$("#warning").show();
return false;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)