<script language="javascript">
var canSubmit = false ;
function formCheck()
{
getResult("TDJY_SCANDOC","SCANDATANAME");
if(canSubmit==false){
return false;
}
else{
return true;
}
}
//构造Ajax对象,获取服务器端对应的信息
//首先是取得XmlHttpRequest;
//然后设置该请求的url:req.open("GET",url, true);
//接着设置请求返回值的接收方法:req.onreadystatechange = complete;
//该返回值的接收方法为——complete();
//最后是发送请求:req.send(null);
function getResult(tblName,attrName)
{
var url = "AjaxConn.jsp?tblName=" + tblName + "&attrName=" + attrName;
if (window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if(xmlHttp)
{
xmlHttp.open("GET",url, true);
xmlHttp.onreadystatechange = function() {complete();}
xmlHttp.send(null);
}
}
//返回值接收方法:complete(),
//首先判断是否正确返回,如果正确返回,用DOM对返回的XML文件进行解析。
//得到city的值以后,再通过buildSelect(str,sel)方法赋值到相应的选择框里头去。
function complete()
{
if (xmlHttp.readyState == 4)
{
var rtnStr = xmlHttp.responseText;
//取出返回值中,所需的字段值
rtnStr = rtnStr.substring(rtnStr.indexOf("<body>")+6);
rtnStr = rtnStr.substring(0,rtnStr.indexOf("</body>"));
rtnStr = rtnStr.replace(/\s/g,"!")
if(rtnStr == null || rtnStr == "!!!!!!!"){
alert("尚未上传扫描件");
canSubmit = false;
}
else{
alert("提交成功");
canSubmit = true;
}
}本来是想通过canSubmit传递的值,来判断数据是否存在相应的扫描件,不存在不允许上传,但是好像canSubmit的值没发生改变还是false,这个是怎么回事?
var canSubmit = false ;
function formCheck()
{
getResult("TDJY_SCANDOC","SCANDATANAME");
if(canSubmit==false){
return false;
}
else{
return true;
}
}
//构造Ajax对象,获取服务器端对应的信息
//首先是取得XmlHttpRequest;
//然后设置该请求的url:req.open("GET",url, true);
//接着设置请求返回值的接收方法:req.onreadystatechange = complete;
//该返回值的接收方法为——complete();
//最后是发送请求:req.send(null);
function getResult(tblName,attrName)
{
var url = "AjaxConn.jsp?tblName=" + tblName + "&attrName=" + attrName;
if (window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if(xmlHttp)
{
xmlHttp.open("GET",url, true);
xmlHttp.onreadystatechange = function() {complete();}
xmlHttp.send(null);
}
}
//返回值接收方法:complete(),
//首先判断是否正确返回,如果正确返回,用DOM对返回的XML文件进行解析。
//得到city的值以后,再通过buildSelect(str,sel)方法赋值到相应的选择框里头去。
function complete()
{
if (xmlHttp.readyState == 4)
{
var rtnStr = xmlHttp.responseText;
//取出返回值中,所需的字段值
rtnStr = rtnStr.substring(rtnStr.indexOf("<body>")+6);
rtnStr = rtnStr.substring(0,rtnStr.indexOf("</body>"));
rtnStr = rtnStr.replace(/\s/g,"!")
if(rtnStr == null || rtnStr == "!!!!!!!"){
alert("尚未上传扫描件");
canSubmit = false;
}
else{
alert("提交成功");
canSubmit = true;
}
}本来是想通过canSubmit传递的值,来判断数据是否存在相应的扫描件,不存在不允许上传,但是好像canSubmit的值没发生改变还是false,这个是怎么回事?
你最基本要学会用firebug.
{
getResult("TDJY_SCANDOC","SCANDATANAME"); if(canSubmit==false){
return false;
}
else{
return true;
}}
这个方法调用getResult()方法的时候, 不会停下来等你的Ajax走完的,会直接执行下一行代码,if(){}
,所以,不管你Ajax返回来是什么值,canSubmit的值都是初始化的false,明白了吧 。你可以在Ajax返回后根据返回值做相应的操作 这样就不会有问题了。
问题是那个判断的我在后面做了,但是如何能让 function complete()直接返回ture或者false,使得Form可以提交或者不可以提交呢?
function getResult();
function complete();if(canSubmit==false){
return false;
}
else{
return true;
}
}
可是显示正常了,去数据库看,本来不该加入的数据还是进去了,也就是说这个条件没起到作用,只要点提交不管alert显示的是什么都可以入库
我把异步改成了同步,但是仍然能提交:
。onSubmit="return formCheck();"。
var canSubmit = false;
function formCheck()
{ getResult("TDJY_SCANDOC","SCANDATANAME");
if(canSubmit==false){
alert("尚未上传扫描件");
return false;
}
else{
alert("提交成功");
return true;
}
}
canSubmit已经在上面提到的complete中赋值了,当不满足条件时:能正确的显示“尚未上传扫描件”,照理说应该返回FALSE,但是进数据库一查,还是提交了,这是怎么回事?