开发者

onreadystatechange in jQuery v1.4

The new jQuery v1.4 says this...

jQuery.ajax() is now using onreadystatechange instead of a timer

Ajax requests should now take fewer resources by using onreadystatechange instead of polling.

I am not sure exactly what this means but on my site (social network like facebook, myspace) I have notifications that us开发者_开发百科er's get, it makes AJAX call periodicly to see if there is new notifications to show on a page, is this something that can improve the way stuff like that is done?


Yes it would improve your site. Depending on how much AJAX your site uses, the improvement will not be noticeable in speed as much as lower system resources being used during the call.

IE6 does not support onreadystatechange so I assume it will fall back to the timer for IE6, but most other browser implementations of XMLHTTPRequest support that event. Event callbacks always use less resources than a polling script (that checks something every few milliseconds).

Regarding IE6

The onreadystatechange event was introduced in Windows Internet Explorer 7. Source: MSDN


2 Doug Neiner

IE 6 definitely supports event onreadystatechange. I can see it right now in IE 6.0.2 on XPsp2. MSDN states that object XMLHttpRequest supported since version 7 of IE, including all of its events. Modern libraries (like jQuery) workaround this by manual creation of objects "Microsoft.XMLHTTP" or "Msxml2.XMLHTTP" which are both supporting onreadystatechange event. example here (MSDN).

Good luck.

PS answered here coz this thread in top 10 of google results searching "onreadystatechange jquery"


onReadyStateChange is a property on the xmlHttpRequest object. It looks like $.ajax was previously polling the xhr to see if it was ready, but is now instead listening to the actual event. This would mean that it consumes less javascript resources, it does not relieve you of any server resources, because you still have to do AJAX polling in that sense. So it's not really a new technique that you have to implement or something, it's just a difference in what goes on behind, and to utilize that improvement, all you have to do is to switch to the new version.

I'm guessing (but I'm not sure), that now that they use onReadyStateChange, you can also pass your own callback methods to that event, which would allow you to do Comet ("AJAX Push"), which could potentially improve your server-side performance. But be aware that Comet can be tricky to implement :)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜