执行checkhouse(),已经弹出"jj"了,show()应该返回true呀,但是网页上显示的竟然是"this house is already registered",我晕啊!!!!!!
function checkhouse(){
var obj5=document.getElementById('hello');
if(!/^[0-9]#[0-9]{3}$/.test(document.form1.house.value)){

obj5.innerHTML="id format is not correct";



}else if(!show()){

obj5.innerHTML="this house is already registered";

}else{

obj5.innerHTML="hao";
return true;
}
}

function show(){
var helloobj=document.getElementById("hello");
ajax=createAjax();
ajax.onreadystatechange=function(){
if(ajax.readyState==4){
if(ajax.status==200){
var data=ajax.responseText;
alert(data);

if(data.replace(/^\s*|\s*$/g, '')=="ok"){
alert("jj");
    return true;
}
}else{
alert("页面请求失败");
}
}
} ajax.open("post", "register.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var dorarea=document.getElementsByTagName('select')[0].value;
var dorhouse=document.form1.house.value;
var str="area="+dorarea+"&house="+dorhouse;
ajax.send(str);

}

解决方案 »

  1.   

    }else if(!show())这个地方,你写的感叹号,是在中文下写的,改了试试看。
      

  2.   

    还是不行,一样的结果,试了一下alert(show()),弹出"undefined",是不是show()方法不能返回值?
      

  3.   

    window.onload = function(){
    if(!show()){
    alert("true");
    }

    function show(){
    return false;
    }没有问题啊,这样测试是可以的,你确定已经alert("jj")了?function checkhouse(a){//改这
    var obj5=document.getElementById('hello');
    if(!/^[0-9]#[0-9]{3}$/.test(document.form1.house.value)){
    obj5.innerHTML="id format is not correct";
    }else if(!a){//改这
    obj5.innerHTML="this house is already registered";
    }else{
    obj5.innerHTML="hao";
    return true;
    }
    } function show(){
    var helloobj=document.getElementById("hello");
    ajax=createAjax();
    ajax.onreadystatechange=function(){
    if(ajax.readyState==4){
    if(ajax.status==200){
    var data=ajax.responseText;
    alert(data);
    if(data.replace(/^\s*|\s*$/g, '')=="ok"){
    alert("jj");
    checkhouse(1);//改这
    }
    }else{
    alert("页面请求失败");
    }
    }
    }
    ajax.open("post", "register.php", true);
    ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    var dorarea=document.getElementsByTagName('select')[0].value;
    var dorhouse=document.form1.house.value;
    var str="area="+dorarea+"&house="+dorhouse;
    ajax.send(str);
    } 或者你做这样的改动试试能达到你要的效果不?
      

  4.   

    else{
                        alert("页面请求失败");
    checkhouse(0);//改这,分别作判断
                    }
      

  5.   

    if(ajax.status==200){                    var data=ajax.responseText;                    alert(data);                    if(data.replace(/^\s*|\s*$/g, '')=="ok"){                        alert("jj");                        checkhouse(1);//改这                    }                }else{                    alert("页面请求失败");                }
    就是把你的处理函数,写在这个地方。
      

  6.   

    你这个问题,你必须把同步与异步的问题搞清楚。你这个要用同步了。
    ajax.open("post", "register.php", true);
    把这个改为:
    ajax.open("post", "register.php", false);