JavaScript 全局变量传值

zjjh8877227 2010-05-18 03:10:59
<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,这个是怎么回事?
...全文
161 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjjh8877227 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 kk3k2005 的回复:]

查看下ajax调用 同步和异步的区别 这个是影响代码运行顺序的
[/Quote]

我把异步改成了同步,但是仍然能提交:
。。。。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,但是进数据库一查,还是提交了,这是怎么回事?
KK3K2005 2010-05-18
  • 打赏
  • 举报
回复
查看下ajax调用 同步和异步的区别 这个是影响代码运行顺序的
zjjh8877227 2010-05-18
  • 打赏
  • 举报
回复
就是不用formcheck()返回,在complete里面做手脚吧,但是我不知道怎么做手脚
zjjh8877227 2010-05-18
  • 打赏
  • 举报
回复
能否详细点,“在complete()方法里对返回值做判断,如果满足你的条件,就提交,否则 不提交 完事了呗”,这个我也想啊,可是不知道怎么做
trest 2010-05-18
  • 打赏
  • 举报
回复
没有必要非得单独写一个方法来控制
trest 2010-05-18
  • 打赏
  • 举报
回复
你在提交的时候调用getResult("TDJY_SCANDOC","SCANDATANAME")方法。

然后,在complete()方法里对返回值做判断,如果满足你的条件,就提交,否则 不提交 完事了呗
晨晨 2010-05-18
  • 打赏
  • 举报
回复
complete()是什么函数?
zjjh8877227 2010-05-18
  • 打赏
  • 举报
回复
我想了个办法在function formCheck() {
function getResult();
function complete();

if(canSubmit==false){
return false;
}
else{
return true;
}
}
可是显示正常了,去数据库看,本来不该加入的数据还是进去了,也就是说这个条件没起到作用,只要点提交不管alert显示的是什么都可以入库
zjjh8877227 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tiandefei825 的回复:]

你那个方法调用的就有问题. function formCheck()
{
getResult("TDJY_SCANDOC","SCANDATANAME");

if(canSubmit==false){
return false;
}
else{
return true;
}

}
这个方法调用getResult()方法的时候, 不会停下来等你的Aj……
[/Quote]

问题是那个判断的我在后面做了,但是如何能让 function complete()直接返回ture或者false,使得Form可以提交或者不可以提交呢?
trest 2010-05-18
  • 打赏
  • 举报
回复
赶紧换头像吧 ,有美女本来想回答你 都被你吓跑了...哈哈
trest 2010-05-18
  • 打赏
  • 举报
回复
你那个方法调用的就有问题. function formCheck()
{
getResult("TDJY_SCANDOC","SCANDATANAME");

if(canSubmit==false){
return false;
}
else{
return true;
}

}
这个方法调用getResult()方法的时候, 不会停下来等你的Ajax走完的,会直接执行下一行代码,if(){}
,所以,不管你Ajax返回来是什么值,canSubmit的值都是初始化的false,明白了吧 。你可以在Ajax返回后根据返回值做相应的操作 这样就不会有问题了。
zjjh8877227 2010-05-18
  • 打赏
  • 举报
回复
回答我的问题,我换个好点的,
trest 2010-05-18
  • 打赏
  • 举报
回复
楼主的头像真的很丑..
zjjh8877227 2010-05-18
  • 打赏
  • 举报
回复
还有一个问题,就是rtnStr的值好像保存的是上一次的值,结果后一次没有扫描,他也显示上传成功,怎么刷新那个rtnStr的值呢?
zjjh8877227 2010-05-18
  • 打赏
  • 举报
回复
用Myeclipse的debug也是无错啊
zjjh8877227 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qazwsxhai 的回复:]

FF 火狐
你最基本要学会用firebug.
[/Quote]
呃~~~~~我是用MyEclipse做的
qazwsxhai 2010-05-18
  • 打赏
  • 举报
回复
FF 火狐
你最基本要学会用firebug.
zjjh8877227 2010-05-18
  • 打赏
  • 举报
回复
现在建议你在ff下看看firebug报错不报错???什么FF
passself 2010-05-18
  • 打赏
  • 举报
回复
应该不会,按说是可以的,你的方式也对,现在建议你在ff下看看firebug报错不报错,可能是你别的语句错误了,js代码就不继续执行了

87,903

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧