ajax返回值的问题 本帖最后由 xiongmzh 于 2010-02-27 14:00:40 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个这样是不行的ajax是异步的,请求发出后,自身就继续向下执行,你要得到请求返回的结果,只能放到回叫函数,即byB里 我试过把text 定义成外部的全局变量,然后alert(text); 弹出的是未知数据我就是想得到byB中的text变量 得到之后呢?你不是能在byB里取到吗? 你要alert,在byB里alert一下就是了.再不....你搞个循环等待一下, 然后alert( document.getElementById('ajaxcheck').innerHTML )..... 这个没保险,不知道ajax多久才能返回来,还有可能失败呢 因为我需要text这个值,在check函数里做一个判断,如你所说,我做一个循环试试 if(xhr.readyState == 4 && xhr.status == 200){ check(xhr.responseText);} 不是,我正是需要在check函数里处理事件,应该是要回调byB函数,回调这个词语很熟悉,倒是没用过,试试看helloyou0说的循环的方法试过了,不可取,我继续找其他方法 xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200) { byB(); }} function byB(text){ document.getElementById('ajaxcheck').innerHTML = text; return text;}xmlHttp.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { byB(xmlHttp.responseText); } } 没注意你不能return text;你取得text要做什么一起做了,何必return. 是这样的,我就说我最终意图吧我用Ajax异步验证验证码是否正确,正确就提交数据,错误的话,就提交不了数据。本来是在php里面验证的,但是万一验证错误,又得返回,用户又要重新填一次数据,麻烦,其实也可以用php判断,如果验证码错误,就用session记录提交的post数据,返回后,表单里还能保存着先前提交的数据,这个基本实现了,唯有一处地方搞了很久没实现,于是想到用Ajax来做 呵呵,你的验证码一定要用php再验证一遍,或使用ajax验证。javascript验证是可以绕过的。"就用session记录提交的post数据"没必要,验证这起可以使用javascript控制数据的提交,比如验证码正确,使用.click()去点击隐藏的表单提交按钮,不过一定要记住服务器端接收数据时一定要再验证是否通过“验证”原因就是前面说的。 哈哈终于搞定了猜怎么着我给表单加了一个隐藏域,然后把text赋值给隐藏域,但是,第一次请求总是不会实时赋值给这个隐藏域,那么,我就把check函数里面的Ajaxcheck(imagecode),再写一个Ajaxcheck(imagecode)就可以了两次请求,第二次请求就如意的赋值给了隐藏域了。谢谢大家,感谢 我用PHP+MYSQL编程开发一个新闻系统,为何PHP对空格输出不了? 问一个SMARTY配置的问题 为什么会这样的,关于cookie的(在线等了) 很奇怪很奇怪很奇怪的問題,能找到錯誤算你狠 这个菜鸟的小问题,请教一下 还是gd安装的问题(redhat)! 请问,PHP里的数学算法,商该怎么得? 请问有没有谁可以提供一个用单个文件控制上传下载的PHP程序? 微软重大安全漏洞被发现,17个字符即可让IE浏览器outlook FrontPage...和Html相关的程序崩溃 提问斑竹!提问斑竹! 求php代码运行后,输出结果是什么? php怎样替换css文件中相应的内容?
ajax是异步的,请求发出后,自身就继续向下执行,你要得到请求返回的结果,只能放到回叫函数,即byB里
..... 这个没保险,不知道ajax多久才能返回来,还有可能失败呢
{
check(xhr.responseText);
}
不是,我正是需要在check函数里处理事件,应该是要回调byB函数,
回调这个词语很熟悉,倒是没用过,试试看helloyou0说的循环的方法试过了,不可取,我继续找其他方法
{
if(xhr.readyState == 4 && xhr.status == 200)
{
byB();
}
}
{
document.getElementById('ajaxcheck').innerHTML = text;
return text;
}
xmlHttp.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
byB(xmlHttp.responseText);
}
}
你不能return text;你取得text要做什么一起做了,何必return.
本来是在php里面验证的,但是万一验证错误,又得返回,用户又要重新填一次数据,麻烦,
其实也可以用php判断,如果验证码错误,就用session记录提交的post数据,返回后,表单里还能保存着先前提交的数据,这个基本实现了,唯有一处地方搞了很久没实现,于是想到用Ajax来做
终于搞定了
猜怎么着
我给表单加了一个隐藏域,然后把text赋值给隐藏域,但是,第一次请求总是不会实时赋值给这个隐藏域,那么,我就把check函数里面的Ajaxcheck(imagecode),再写一个Ajaxcheck(imagecode)就可以了
两次请求,第二次请求就如意的赋值给了隐藏域了。谢谢大家,感谢