如何在javascript ajax中返回bool(true或false)?

时间:2014-01-09 06:37:51

标签: javascript php ajax

我尝试过这段代码。但它没有用。我只需要返回bool值的状态。但总是会返回true

 
function nic_is_exist(){

  var state = true;
  var nic = document.getElementById("tbNic").value;
  var xmlhttp;
  if (window.XMLHttpRequest){
    xmlhttp=new XMLHttpRequest();
  }else{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  } 
  xmlhttp.onreadystatechange=function(){
    if(xmlhttp.readyState == 1){
      document.getElementById("spNic").innerHTML="<img src='../Style/images/loarding.gif' />";  
    }     
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
      document.getElementById("spNic").innerHTML="";
      var str = xmlhttp.responseText;
      alert(str+2);
      if( str != "1"){
        alert("if");
        fill_form(str);
        checkNull();
        state = true;   
      }else{
        alert("else");
        state = false;
      }       
    }     
  }
  xmlhttp.open("POST","rpoRegister_PHP.php?a="+nic,true);
  xmlhttp.send();
  return state;
}

3 个答案:

答案 0 :(得分:0)

你的ajax请求运行异步所以在你的ajax请求完成你的函数之前返回你的state变量值true在初始化期间

你应该将你需要做的任何事情都转移到函数本身。

基本上有两种解决方法:

  1. 使AJAX调用同步(让我们称之为SJAX)。

  2. 使用回调重构代码以使其正常工作。

答案 1 :(得分:0)

AJAX是异步的。如果您需要根据TRUE / FALSE执行某些操作,则需要将其放在if (xmlhttp.readyState==4 && xmlhttp.status==200)块中。或者使用函数调用替换state = true;state = false;代码。

示例:

if( str != "1"){
    alert("if");
    fill_form(str);
    checkNull();
    doSuccessCode(); 
  }else{
    alert("else");
    doFailCode();
  }

答案 2 :(得分:0)

取决于您如何从rpoRegister_PHP.php回显responseText 你在比较它们之前尝试使用.trim()吗?这可能是一个额外的空间。

  var str = xmlhttp.responseText.trim();
  alert(str+2);
  if( str != "1"){
    alert("if");
    fill_form(str);
    checkNull();
    state = true;   
  }else{
    alert("else");
    state = false;
  }