Parametre d'une fonction javascript

WRInaute passionné
Bonjour,

A-t-on le droit de définir une valeur par défaut dans la déclaration d'une fonction.

Code:
function getAjax(page, method = 0, params = null)

Car voici la console d'erreurs.

Erreur : missing ) after formal parameters
Fichier source : http://localhost/ajax.js
Ligne : 22, Colonne : 30
Code source :
function getAjax(page, method = 0, params = null) {

Merci.
 
WRInaute passionné
Apparemment non!

Mais JavaScript permet d'appeler une fonction avec moins d'arguments que le nombre d'arguments dans la définition.

function getAjax(page, method, params)

getAjax(x);

Il reste à définir les valeurs par défaut autrement.
 
WRInaute passionné
Oké merci, j'ai repris l'exemple d'ici http://siddh.developpez.com/articles/ajax/#LIII à la différence que je souhaite que le résultat soit retourné et non affiché avec alert();

Le problème est que j'obtiens undefined à chaque fois.

Code:
function getXhr(){
	var xhr = null;
	if(window.XMLHttpRequest)
	   xhr = new XMLHttpRequest();
	else if(window.ActiveXObject){
	   try {xhr = new ActiveXObject('Msxml2.XMLHTTP');}
           catch (e) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
	}
	else {
	   alert('Votre navigateur ne supporte pas les objets XMLHttpRequest.');
           xhr = false; 
	} 
	return xhr;
}

Ce return ici
Code:
function getAjax(page) {
	var xhr = getXhr();
	xhr.onreadystatechange = function() {
		if(xhr.readyState == 4 && xhr.status == 200) {
			return xhr.responseText;
		}
	}
	if (method == 0)
		xhr.open('GET', page, true);
	else
		xhr.open('POST', page, true);
	xhr.send(params);
}
Code:
function test() {
	alert(getAjax('a.php'));
}
 
WRInaute passionné
Quand on utilise la méthode GET, le paramètre de send() doit être null.
Quand on utilise POST, il faut appeller aussi la méthode setRequestHeader.

Utiliser Ajax dans ces conditions est de toutes façons assez compliqué. Voir pour plus d'explications (c'est assez long):

http://www.xul.fr/xml-ajax.html

et les multiples démos.
 
WRInaute passionné
Oké merci, je l'avais bien mis à null dans mon test.

En fait oui, ce que je veux faire ne peut fonctionner via l'ajax asynchrone...
 
Discussions similaires
Haut