Cross navigateur AJAX fonction pour charger dynamiquement HTML

Je recherche une fonction AJAX pour demander dynamiquement une page HTML. J'ai déjà trouvé ce qui suit:

function ajaxinclude(url) { var page_request = false if (window.XMLHttpRequest) // if Mozilla, Safari etc page_request = new XMLHttpRequest() else if (window.ActiveXObject) // if IE { try { page_request = new ActiveXObject("Msxml2.XMLHTTP") } catch (e){ try{ page_request = new ActiveXObject("Microsoft.XMLHTTP") } catch (e){} } } else return false page_request.open('GET', url, false) //get page synchronously page_request.send(null) return page_request.responseText; } 

Cela fonctionne bien dans Firefox et Chrome, mais il échoue dans IE sur la ligne suivante:

 page_request.open('GET', url, false) 

Existe-t-il une meilleure fonction disponible qui est parfaitement compatible avec le navigateur?

Edit: Merci pour toutes les grandes suggestions … à la fin, j'ai décidé de ne pas réinventer la roue ici. Et l'une des choses que j'ai oublié de mentionner était que j'avais aussi besoin de la mettre à jour à un intervalle … bien que j'avais déjà compris ça, donc je ne pensais pas que cela faisait la différence. Mais alors j'ai trouvé la grande méthode Ajax.PeriodicUpdater () en prototype et j'ai beaucoup changé d'avis. Je viens d'aller d'une solution 50 LOC à environ 4 lignes 🙂

Je devrais convenir, ne pas réinventer la roue, ou dans ce cas, AJAX.

JQuery et Prototype font un excellent travail pour ne pas avoir à faire face au support multi-navigateurs et à simplifier considérablement la programmation par type Javascript. Je suis tombé dans JQuery d'abord, donc je suis parti pris vers lui, et de ce que j'ai vu la bibliothèque est un peu plus petit (lire: plus vite dans le navigateur), mais Prototype, je crois, a duré plus longtemps et a des TONNES de plugins et d'exemples là-bas. Ruby on Rails, par défaut, utilise Prototype. Assez drôle, le code dans les deux semble très similaire et prend peu de réécriture pour changer les bibliothèques.

JQuery Tutorials <- Juste à la tête de la section AJAX

Ou vous pouvez essayer ceci si vous n'avez pas besoin d'un cadre entier: http://www.hunlock.com/blogs/The_Ultimate_Ajax_Object

Je suggérerais d'utiliser un certain nombre de frameworks javascript différents pour cette fonctionnalité au lieu de la réinventer. Il y a jQuery , Prototype / Scriptaculous , MooTools , Dojo et bien d'autres. Tous ces services offrent un support multi-navigateurs pour ce que vous faites.

Je recommande jQuery, mais il existe aussi une solution très légère: XHConn

Si j'étais vous, j'utilisais une boîte à outils comme JQuery afin de vous assurer qu'elle soit aussi compatible que possible. Peu importe quoi, cependant, vous devrez traiter les cas où cela ne fonctionne pas. N'oubliez pas qu'il y a beaucoup de gens qui naviguent sans le support javascript.

Vous pouvez utiliser une version IE que votre script ne supporte pas. Essayez-le à nouveau avec cet extrait de code ajouté avant votre fonction. ajaxinclude() peut ensuite être raccourci à

 function ajaxinclude(url) { var req = new XMLHttpRequest; if(!req) return null; req.open('GET', url, false); // get page synchronously req.send(); return req.responseText; } 

À part: je n'aime généralement pas les cadres – il y a trop de magie qui se passe dans les coulisses pour que je me sens à l'aise …