2017-02-25 99 views
0

我试图使用PHP验证服务器端的电子邮件。我正在使用jQuery“$ .post()”函数执行此操作。我知道我也可以用'$ .ajax()'来做到这一点。如何使用AJAX中的RETURN值(来自服务器脚本)

但问题是如果服务器端的PHP脚本返回一个值,那么jQuery的帖子或ajax都无法捕捉结果,但如果PHP'回声'的结果,那么它的作品完美。

我的问题是我如何才能捕捉到PHP返回的结果,而不是ECHO。

目前我我的JS代码如下所示:

function validate_email(email) { 

    $.post('106_1.email.php', {email: email}, function (responseData) { 

     $('#feedback').html(responseData); 
    }); 
} 

和PHP代码如下所示:

$email = $_POST['email'] ?? null; 

if ($email) { 

    if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 

     echo '<span class="text-primary">Email is valid.</span>'; 
    } else { 

     echo '<span class="text-danger">Invalid Email ...!</span>'; 
    } 
} 

但我真的希望PHP返回布尔像以下:

$email = $_POST['email'] ?? null; 

if ($email) { 

    if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 

     return true; 
    } else { 

     return false; 
    } 
} 

但是,如果我这样做或返回布尔以外的任何东西,jQuery代码也无法捕捉到。

但我需要的PHP到“回归”的结果,而不是“回声”

任何帮助将得到高度赞赏。

回答

0

试试这个:

PHP的:

$email = $_POST['email'] ?? null; 

if ($email) { 

    if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     echo true; 
    } else { 

     echo false; 
    } 
} 

的Jquery:

$.ajax({ 
    url : '106_1.email.php', 
    data: { 
     email: email 
    }, 
    success: function(response){ 
     if(response) // here response = true; 
     { 
      // do something 
     } 
     else 
     { 
      // do something 
     } 
    } 
}); 
+0

很好的解决方法,但我真的需要PHP代码返回,并没有做ECHO在所有...因为我需要回报更复杂的任务 – APu