优秀的手机游戏下载!
首页 怎么获得onreadystatechange调用的函数的返回值

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

发布时间:2024-01-11 00:20:34 编辑:手游哥 浏览:466

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 false } re…
查看详情
function yanzheng(){ xmlHttp.onreadystatechange = function() { return false } re…
查看详情
function yanzheng(){ xmlHttp.onreadystatechange = function() { return false } re…
查看详情
相关资讯
猜你喜欢