function yanzheng(){
xmlHttp.onreadystatechange = function()
{
return false
}
return ture
}
这里的return false, 是内部function()的返回值,而不是function yanzheng的返回值,第二个,return true才是外层flase的返回值哈 🙂
——————————–
这里最好不要用onSubmit=”return yanzheng()”
也不要用input type=”submit”
因为ajax会有个延时和等待,但是函数会立即返回一个值(true/false),因此不适合用在这里作为判断,流程应该是,先判断是否符合,符合再提交,不符合,直接return 🙂
可以用
<input type=”button” onclick=”yanzheng(this.form)” value=”submit” />
如果验证通过, 在函数里面执行 form.submit() 动作就好了 🙂
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
今天抽空弄了一下关于Ajax的问题,遇到了你说的这个情况,查询了一下相关解决方案,得到的解答是:在调用函数的时候不能带任何参数,使用()都不行!
具体解决方法是,将你的代码中下面的这一段
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 &&xmlhttp.status==200){
msg=xmlhttp.responseText
}
}
拆分开,也就是=后面的写成一个单独的function。比如:
function connect() {
if(xmlhttp.readyState==4 &&xmlhttp.status==200){
msg=xmlhttp.responseText
}
}
然后将原先的代码调用修改为xmlhttp.onreadystatechange=connect
这个地方千万不能写成xmlhttp.onreadystatechange=connect()
也就是connect后面千万别加(),之后readyState的状态就会发生改变了。
这个现象弄的我哭笑不得,但最后的确通过这个方法解决了,祝你好运!
初学ajax,onreadystatechange没反应
如下
复制代码
代码如下:
<!DOCTYPE
HTML>
<html>
<head>
<meta
charset=”utf-8″>
<title>IE9/10同时支持script元素的onload和onreadystatechange事件</title>
<script
src=”http://code.jquery.com/jquery.min.js”
onload=”alert(1)”
onreadystatechange=”alert(2)”></script>
</head>
<body>
</body>
</html>
结果:
IE6/7/8
:
弹出2
IE9/10
:
弹出2,1
Firefox/Safari/Chrome/Opera
:
弹出1
测试结果可以看出,IE9后已经开始支持script的onload事件了。一直以来我们判断js文件是否已经加载完成就是用以上的两个事件。很久以前就知道IE中使用onreadystatechange事件,事件handler中使用readyState的值判断是否加载完成。其它浏览器使用onload事件。
复制代码
代码如下:
if(isIE){

script.onreadystatechange
=
function(){
if(this.readyState
==
‘loaded’
||
this.readyState
==
‘complete’){
callback()
}
}
}else{
script.onload
=
function(){
callback()
}
}
这种写法现在也没有问题。但如下写法可能会让的回调在IE9/10中执行两次
复制代码
代码如下:
script.onload
=
script.onreadystatechange
=
function(){
if(!this.readyState
||
this.readyState
==
“loaded”
||
this.readyState
==
“complete”){
callback()
}
}
这种写法的取巧之处在于onload和onreadystatechage都用同一个函数,Firefox/Safari/Chrome/Opera中不支持onreadystatechage事件,也没有readyState属性,所以
!this.readyState
是针对这些浏览器。readyState是针对IE浏览器,载入完毕的情况是loaded,缓存的情况下可能会出现readyState为complete。所以两个不能少。但由于IE9/10也已经支持onload事件了,会造成callback执行2次。
相关:
http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1
http://www.w3.org/TR/html5/scripting-1.html#script
https://developer.mozilla.org/En/HTML/Element/Script
XMLHttpRequest的onreadystatechange的函数无法在firefox和chrome上实现调用
先看下xmlHttp.readyState这个状态码:
0:请求未初始化(还没有调用 open())。
1:请求已经建立,但是还没有发送(还没有调用 send())。
2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
4:响应已完成;您可以获取并使用服务器的响应了。
processor表示的回调函数,是当xmlHttp.readyState为4的时候,成功返回内容后才进入操作的,你的xmlHttp.readyState为0,当然不行啊。
希望对你有帮助,分析给你之前我学习的一篇文章,希望对你有帮助:
http://www.cnblogs.com/snowinmay/p/3195072.html
尊敬的用户,您好!很高兴为您答疑
这是因为firefox和chrome严格遵循标准所致。
事实上,firefox中对ajax同步请求是不调用状态改变函数onreadystatechange的,firefox中的ajax同步传输则在xmlhttp.send(null)之后直接使用xmlhttp.responseText便可获取ajax同步传输返回值。
建议您尝试通过判断浏览器类型,再启用不同的js脚本。
希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。
以上就是关于怎么获得onreadystatechange调用的函数的返回值全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!











