(NATIVE JAVASCRIPT) - ajax 请求的函数不提供响应
(NATIVE JAVASCRIPT) - The function with ajax request does not provide a response
我目前正在一个模块中工作,用户将在该模块中进行注册,我将要提到的以下方法将检查注册人的电子邮件是否已被使用。
为什么带有 ajax 请求的函数对带有 ajax 请求的其他函数没有 return 任何值?顺便说一句,我没有使用任何 javascript 框架,例如 jquery,只是一个普通的原生 javascript ;)
顺便说一句,代码在这里^_^ 注意:XMLHttpRequest() 已经可以了。与此无关:)
function checkEmailExistense(email){
var url = "library/functions.php?action=emailchecker&emailadd=" + email;
http.onreadystatechange = function(){
if (http.status == 200 && (http.readyState === 4)){
var res = http.responseText;
if (res == "Invalid") {
return 0;
}
}
}
http.open("GET", url , true);
http.send();
}
在另一个 javascript 函数中,我有一个 ajax 注册请求,我有一个 if 语句来检查上面函数的 returning 值是否为 0;
var emailaddress = document.getElementById("emailadd").value;
if (checkEmailExistense(emailaddress) == 0){
errorcount+=1;
errorstatement+="Email already exist";
}
我的 php 查询没有问题,但这是我的代码 ;)
$action = $_GET['action'];
switch ($action){
case 'emailchecker':
checkTheEmailAdd();
break;
}
function checkTheEmailAdd(){
$email = $_GET['emailadd'];
$connection = new connection();
$realconnection = $connection->connect();
$getCount = mysqli_query($realconnection, "SELECT user_email FROM tbl_user WHERE user_email = '".$email."'");
if(mysqli_num_rows($getCount) > 0){
echo "Invalid";
}
}
期待一些答案。谢谢!
Ajax 调用是异步的。所以你正在检查一些还不存在的东西。
但即使它不是异步的,onreadstatechange 处理程序中的 return 语句对 checkEmailExistense
方法也没有影响。
而是使用在请求 returns 数据时立即调用的回调:
function checkEmailExistense(email, callback){
var url = "library/functions.php?action=emailchecker&emailadd=" + email;
http.onreadystatechange = function(){
if (http.status == 200 && (http.readyState === 4)){
var res = http.responseText;
if (res == "Invalid") {
callback(0);
} else {
callback(1);
}
}
}
http.open("GET", url , true);
http.send();
}
并检查:
var emailaddress = document.getElementById("emailadd").value;
checkEmailExistense(emailaddress, function(success) {
if(success === 0) {
errorcount+=1;
errorstatement+="Email already exist";
}
});
我目前正在一个模块中工作,用户将在该模块中进行注册,我将要提到的以下方法将检查注册人的电子邮件是否已被使用。
为什么带有 ajax 请求的函数对带有 ajax 请求的其他函数没有 return 任何值?顺便说一句,我没有使用任何 javascript 框架,例如 jquery,只是一个普通的原生 javascript ;)
顺便说一句,代码在这里^_^ 注意:XMLHttpRequest() 已经可以了。与此无关:)
function checkEmailExistense(email){
var url = "library/functions.php?action=emailchecker&emailadd=" + email;
http.onreadystatechange = function(){
if (http.status == 200 && (http.readyState === 4)){
var res = http.responseText;
if (res == "Invalid") {
return 0;
}
}
}
http.open("GET", url , true);
http.send();
}
在另一个 javascript 函数中,我有一个 ajax 注册请求,我有一个 if 语句来检查上面函数的 returning 值是否为 0;
var emailaddress = document.getElementById("emailadd").value;
if (checkEmailExistense(emailaddress) == 0){
errorcount+=1;
errorstatement+="Email already exist";
}
我的 php 查询没有问题,但这是我的代码 ;)
$action = $_GET['action'];
switch ($action){
case 'emailchecker':
checkTheEmailAdd();
break;
}
function checkTheEmailAdd(){
$email = $_GET['emailadd'];
$connection = new connection();
$realconnection = $connection->connect();
$getCount = mysqli_query($realconnection, "SELECT user_email FROM tbl_user WHERE user_email = '".$email."'");
if(mysqli_num_rows($getCount) > 0){
echo "Invalid";
}
}
期待一些答案。谢谢!
Ajax 调用是异步的。所以你正在检查一些还不存在的东西。
但即使它不是异步的,onreadstatechange 处理程序中的 return 语句对 checkEmailExistense
方法也没有影响。
而是使用在请求 returns 数据时立即调用的回调:
function checkEmailExistense(email, callback){
var url = "library/functions.php?action=emailchecker&emailadd=" + email;
http.onreadystatechange = function(){
if (http.status == 200 && (http.readyState === 4)){
var res = http.responseText;
if (res == "Invalid") {
callback(0);
} else {
callback(1);
}
}
}
http.open("GET", url , true);
http.send();
}
并检查:
var emailaddress = document.getElementById("emailadd").value;
checkEmailExistense(emailaddress, function(success) {
if(success === 0) {
errorcount+=1;
errorstatement+="Email already exist";
}
});