本帖最后由 xiongmzh 于 2010-02-27 14:00:40 编辑

解决方案 »

  1.   

    这个这样是不行的
    ajax是异步的,请求发出后,自身就继续向下执行,你要得到请求返回的结果,只能放到回叫函数,即byB里
      

  2.   

    我试过把text 定义成外部的全局变量,然后alert(text);   弹出的是未知数据我就是想得到byB中的text变量
      

  3.   

    得到之后呢?你不是能在byB里取到吗? 你要alert,在byB里alert一下就是了.再不....你搞个循环等待一下, 然后alert( document.getElementById('ajaxcheck').innerHTML )
    ..... 这个没保险,不知道ajax多久才能返回来,还有可能失败呢
      

  4.   

    因为我需要text这个值,在check函数里做一个判断,如你所说,我做一个循环试试
      

  5.   

    if(xhr.readyState == 4 && xhr.status == 200)
    {
        check(xhr.responseText);
    }
      

  6.   


    不是,我正是需要在check函数里处理事件,应该是要回调byB函数,
    回调这个词语很熟悉,倒是没用过,试试看helloyou0说的循环的方法试过了,不可取,我继续找其他方法
      

  7.   

    xhr.onreadystatechange = function()
    {
       if(xhr.readyState == 4 && xhr.status == 200)
       {
    byB();
        }
    }
      

  8.   

    function byB(text)
    {
        document.getElementById('ajaxcheck').innerHTML = text;
        return text;
    }
    xmlHttp.onreadystatechange = function() 

      if(xhr.readyState == 4 && xhr.status == 200) 
      { 
        byB(xmlHttp.responseText); 
      } 
    }
      

  9.   

    没注意
    你不能return text;你取得text要做什么一起做了,何必return.
      

  10.   

    是这样的,我就说我最终意图吧我用Ajax异步验证验证码是否正确,正确就提交数据,错误的话,就提交不了数据。
    本来是在php里面验证的,但是万一验证错误,又得返回,用户又要重新填一次数据,麻烦,
    其实也可以用php判断,如果验证码错误,就用session记录提交的post数据,返回后,表单里还能保存着先前提交的数据,这个基本实现了,唯有一处地方搞了很久没实现,于是想到用Ajax来做
      

  11.   

    呵呵,你的验证码一定要用php再验证一遍,或使用ajax验证。javascript验证是可以绕过的。"就用session记录提交的post数据"没必要,验证这起可以使用javascript控制数据的提交,比如验证码正确,使用.click()去点击隐藏的表单提交按钮,不过一定要记住服务器端接收数据时一定要再验证是否通过“验证”原因就是前面说的。
      

  12.   

    哈哈
    终于搞定了
    猜怎么着
    我给表单加了一个隐藏域,然后把text赋值给隐藏域,但是,第一次请求总是不会实时赋值给这个隐藏域,那么,我就把check函数里面的Ajaxcheck(imagecode),再写一个Ajaxcheck(imagecode)就可以了
    两次请求,第二次请求就如意的赋值给了隐藏域了。谢谢大家,感谢