找回密码
 注册

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 1563|回复: 7

在循环中执行ajax的问题

[复制链接]
发表于 2009-7-7 11:51:47 | 显示全部楼层 |阅读模式
//====判断每行的数据在数据库中是否存在
      var mySfzh="",myPxbj="",myRowCount=0,rowCount_mark="N";
      var objTable=document.getElementById("myTable");
      for (var t=1;t<objTable.rows.length;t++){
         if(rowCount_mark=="Y"){break;}
         mySfzh=trim(objTable.rows[t].cells[4].innerText);
         myPxbj=document.getElementById("pxbj").value;
         var testcontent = "select count(*) from a_student where sfzh='"+mySfzh+"' and bjbh='"+myPxbj+"'";
         var url = "getrowcount.php";
         var postStr = "content="+ testcontent;
         var ajax = initxmlhttp();
         ajax.open("POST", url, true);
         ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
         ajax.send(postStr);
         ajax.onreadystatechange = function() {
            if (ajax.readyState == 4 && ajax.status == 200) {
               myRowCount = ajax.responseText;
            }
         }
         alert(mySfzh+"=="+myRowCount);
         if(myRowCount > 0){
            alert("第["+(t)+"]行["+mySfzh+"]的数据已经存在请更换!");
            rowCount_mark="Y";
         }
      }
//========================================
为什么我把红色代码注释掉以后,他就执行不到下面的IF判断了呢
难道中间要设置延时吗?
请问是什么问题?
| 发表于 2009-7-7 12:33:01 | 显示全部楼层
别光看啊!@#!@#

版主,帮帮忙啦!!
发表于 2009-7-7 14:10:41 | 显示全部楼层
ajax是异步执行,在alert(mySfzh+"=="+myRowCount);弹出到关闭这段时间起到延时作用,所以你去掉后它往下执行的时候myRowCount==false,而不是不执行
发表于 2009-7-7 14:13:40 | 显示全部楼层
先弄明白异步的意思吧
应该把if放到onreadystatechange 里面
| 发表于 2009-7-7 14:26:25 | 显示全部楼层
//====判断每行的数据在数据库中是否存在
      var mySfzh="",myPxbj="",myRowCount=0,rowCount_mark="N";
      var objTable=document.getElementById("myTable");
      for (var t=1;t<objTable.rows.length;t++){
         if(rowCount_mark=="Y"){break;}
         mySfzh=trim(objTable.rows[t].cells[4].innerText);
         myPxbj=document.getElementById("pxbj").value;
         var testcontent = "select count(*) from a_student where sfzh='"+mySfzh+"' and bjbh='"+myPxbj+"'";
         var url = "getrowcount.php";
         var postStr = "content="+ testcontent;
         var ajax = initxmlhttp();
         ajax.open("POST", url, true);
         ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
         ajax.send(postStr);
         ajax.onreadystatechange = function() {
            if (ajax.readyState == 4 && ajax.status == 200) {
               myRowCount = ajax.responseText;
               if(myRowCount > 0){
                  alert("第["+(t)+"]行["+mySfzh+"]的数据已经存在请更换!");
                  rowCount_mark="Y";
                }
            }
         }
      }
//=============
是这样子吗?我放到onreadystatechange里面了,他也没有提示数据更换的对话框..数据库中确实存在有相同的记录
发表于 2009-7-7 14:45:11 | 显示全部楼层
alert(myRowCount)下看看
发表于 2009-7-7 14:51:28 | 显示全部楼层
不知你返回的是什么
但myRowCount 是一个字符串如果跟0比较应该parseInt一下吧
发表于 2009-7-7 17:38:59 | 显示全部楼层
var ajax = []
for(){
ajax[i] =initxmlhttp()
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则


|小黑屋|Archiver|手机版|blueidea.com ( 京ICP备05002321号   

GMT+8, 2013-12-12 17:11 , Processed in 0.109472 second(s), 10 queries , Gzip On, Memcache On.

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表