function nums(){
var n = document.natform.num.value;
var url="index.php?c=nat&a=natid&id="+n+"";
if(n == ''){
document.getElementById('num').style.display='block';
document.getElementById('num').innerHTML='编号不能为空';
document.getElementById('num').style.color='red';
return false;
}else{
xmlHttpRequest = createXmlHttpRequest();
xmlHttpRequest.onreadystatechange = handle;
xmlHttpRequest.open("GET",url,true);
xmlHttpRequest.send(null);
//我的问题就是 在这个else里怎么接收到 handle()的返回值(true false)
}
}
function handle(){
if(xmlHttpRequest.readyState == 4){
var re = xmlHttpRequest.responseText;
if(re){
document.getElementById('num').style.display='block';
document.getElementById('num').innerHTML='编号已存在';
document.getElementById('num').style.color='red';
return false;
}else{
document.getElementById('num').style.display='block';
document.getElementById('num').innerHTML='可以使用';
document.getElementById('num').style.color='green';
return true;
}
}
}
以上是一个ajax 判断 id 是否存在的, 如果不存在,可以提交,如果存在提示已存在,不能提交 function saves(){
if(nums()){
document.natform.action="index.php?c=nat&a=addnatpost";
document.natform.submit();
}
}但是现在问题是 num() 接收不到 handle() 的返回值, 所以已存在的时候 num() 状态是未定义的, 请教下这块怎么改
var re = xmlHttpRequest.responseText; //这里的re值是多少?alert看看。
//如果没有值,说明是后端接收处理的问题如果在else中的回调函数handle没有执行,这样试试: xmlHttpRequest = createXmlHttpRequest();
xmlHttpRequest.onreadystatechange = function(){
if(xmlHttpRequest.readyState == 4){
var re = xmlHttpRequest.responseText;
if(re){
document.getElementById('num').style.display='block';
document.getElementById('num').innerHTML='编号已存在';
document.getElementById('num').style.color='red';
return false;
}else{
document.getElementById('num').style.display='block';
document.getElementById('num').innerHTML='可以使用';
document.getElementById('num').style.color='green';
return true;
}
}
};
xmlHttpRequest.open("GET",url,true);
xmlHttpRequest.send(null);
你所需要的提交动作应在 handle 中完成
//他妹的ajax
var xmlHttpRequest;
function createXmlHttpRequest(){
if(window.ActiveXobject){
return new activexobject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
}
function nums(){
var n = document.natform.num.value;
var url="index.php?c=nat&a=natid&id="+n+"";
if(n == ''){
document.getElementById('num').style.display='block';
document.getElementById('num').innerHTML='编号不能为空';
document.getElementById('num').style.color='red';
return false;
}else{
xmlHttpRequest = createXmlHttpRequest();
xmlHttpRequest.onreadystatechange = handle;
xmlHttpRequest.open("GET",url,true);
xmlHttpRequest.send(null);
}
}
function handle(){
if(xmlHttpRequest.readyState == 4){
var re = xmlHttpRequest.responseText;
if(re){
document.getElementById('num').style.display='block';
document.getElementById('num').innerHTML='编号已存在';
document.getElementById('num').style.color='red';
return false;
}else{
document.getElementById('num').style.display='block';
document.getElementById('num').innerHTML='可以使用';
document.getElementById('num').style.color='green';
return true;
}
}
}我发一下 完整的代码, 直接掉 handel() 会说xmlHttpRequest 未定义..
if(xmlHttpRequest.readyState == 4){
var re = xmlHttpRequest.responseText;
....
}else{
document.getElementById('num').style.display='block';
document.getElementById('num').innerHTML='可以使用';
document.getElementById('num').style.color='green'; document.natform.action="index.php?c=nat&a=addnatpost";
document.natform.submit();
}
}
}