11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

J'ai un problème que je ne parviens vraiment pas à résoudre. Lorsque je capture un clique sur une page, lequel redirige vers une page ajax, tout fonctionne parfaitement. Le soucis est que lorsque j'effectue exactement la même requête ajax dès le début (et donc sans clic), le navigateur tourne en boucle et rien ne s'affiche jamais. Pourtant, c'est exactement la même requête.

Lorsque je fait un console.log de "xhr.responseText" dans la fonction "setAjaxRequest()", j'ai bien un retour qui est une toute petite chaine jSon.

La totalité de ce code est dans des tag <script type="text_javascript"> d'une page Html.


	setAjaxRequest('home.html?json=true', function(ajax_result) {
		console.log('0');
		document.write('\
			<header>\
				<h1>H1</h1>\
			</header>\
		');
	});
	var xhr = null;
	function setAjaxRequest(url, callback, post = '') {
		if(xhr && xhr.readyState  != 0) {
			return null;
		}
		var xhr = getXMLHttpRequest();
		xhr.onreadystatechange = function() {
			if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
				callback(xhr.responseText);
			}
			else if(xhr.readyState < 4) {
			}
		};
		if(post == '') {
			xhr.open('GET', url, true);
			xhr.send(null);
		}
		else {
			xhr.open('POST', url, true);
			xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xhr.send(post);
		}
	}
	function getXMLHttpRequest() {
		var xhr = null;
		if(window.XMLHttpRequest || window.ActiveXObject) {
			if(window.ActiveXObject) {
				try {
					xhr = new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch(e) {
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
			}
			else {
				xhr = new XMLHttpRequest(); 
			}
		}
		else {
			return null;
		}
		return xhr;
	}


Quelqu'un aurait une solution ?
Je ne comprendrais vraiment pas =/
Modifié par Gaylord.P (25 May 2014 - 18:42)