微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – jquery ajax在没有firebug断点的情况下不工作

我使用以下方法调用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 ".";   
?>

基本上这会检查数据库,如果存在电子邮件显示“存在电子邮件地址!”如果不是我想返回true(所以我回应“.”并进行比较).奇怪的是,如果我使用firebug附近的断点if 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;
  }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐