怎么获得onreadystatechange调用的函数的返回值

发布时间:2024-01-11 00:20:34 来源:君肯网

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 🙂

可以用

&ltinput type=”button” onclick=”yanzheng(this.form)” value=”submit” /&gt

如果验证通过, 在函数里面执行 form.submit() 动作就好了 🙂

仅IE9/10同时支持script元素的onload和onreadystatechange事件分析

今天抽空弄了一下关于Ajax的问题,遇到了你说的这个情况,查询了一下相关解决方案,得到的解答是:在调用函数的时候不能带任何参数,使用()都不行!

具体解决方法是,将你的代码中下面的这一段

xmlhttp.onreadystatechange=function(){

if(xmlhttp.readyState==4 &amp&ampxmlhttp.status==200){

msg=xmlhttp.responseText

}

}

拆分开,也就是=后面的写成一个单独的function。比如:

function connect() {

if(xmlhttp.readyState==4 &amp&ampxmlhttp.status==200){

msg=xmlhttp.responseText

}

}

然后将原先的代码调用修改为xmlhttp.onreadystatechange=connect

这个地方千万不能写成xmlhttp.onreadystatechange=connect()

也就是connect后面千万别加(),之后readyState的状态就会发生改变了。

这个现象弄的我哭笑不得,但最后的确通过这个方法解决了,祝你好运!

初学ajax,onreadystatechange没反应

如下

复制代码

代码如下:

&lt!DOCTYPE

HTML&gt

&lthtml&gt

&lthead&gt

&ltmeta

charset=”utf-8″&gt

&lttitle&gtIE9/10同时支持script元素的onload和onreadystatechange事件&lt/title&gt

&ltscript

src=”http://code.jquery.com/jquery.min.js”

onload=”alert(1)”

onreadystatechange=”alert(2)”&gt&lt/script&gt

&lt/head&gt

&ltbody&gt

&lt/body&gt

&lt/html&gt

结果:

IE6/7/8

:

弹出2

IE9/10

:

弹出2,1

Firefox/Safari/Chrome/Opera

:

弹出1

测试结果可以看出,IE9后已经开始支持script的onload事件了。一直以来我们判断js文件是否已经加载完成就是用以上的两个事件。很久以前就知道IE中使用onreadystatechange事件,事件handler中使用readyState的值判断是否加载完成。其它浏览器使用onload事件。

复制代码

代码如下:

if(isIE){

怎么获得onreadystatechange调用的函数的返回值

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调用的函数的返回值全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

function yanzheng(){ xmlHttp.onreadystatechange = function() { return …
查看详情
function yanzheng(){ xmlHttp.onreadystatechange = function() { return …
查看详情
function yanzheng(){ xmlHttp.onreadystatechange = function() { return …
查看详情
相关文章
推荐游戏
风之谷
风之谷
游戏资讯 10.5M
下载
斗罗大陆3
斗罗大陆3
游戏资讯 566.9M
下载
冠军网球
冠军网球
游戏资讯 148.1M
下载
最佳炮手
最佳炮手
游戏资讯 68.1M
下载
如梦下弦月
如梦下弦月
游戏资讯 840.1M
下载
富甲封神传
富甲封神传
游戏资讯 263.0M
下载