11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous les Alsanautes !

J'utilise la fonction $ajax de jQuery pour poster des données vers un script distant :


		$.ajax({
			type: 'POST',
			url: 'script.php',
			data: {"name": name},
			dataType: 'json',
			success: function(msg){
				alert(msg);
			}
		});


Le problème c'est que mon paramètre "name" est envoyé en UTF-8 à la page script.php. C'est normal ! d'après la doc officielle, utf-8 est le format d'envoi par défaut. Mais, il y a possibilité de spécifier un autre format à l'aide de l'option "contentType"...Super !!!

J'ai rajouté donc à mon code la ligne :


      contentType: "application/x-www-form-urlencoded; charset=iso-8859-1",


Rien n'est fait ! toujours le même problème. La seule solution que j'ai trouvé pour l'instant c'est d'accueillir mon post "name" avec un joli :


     utf8_decode ( $_POST['name'] );


Avouez le ! c'est pas très propre Smiley ohwell

Pouvez vous m'aider svp à trouver une meilleure solutions ?
Est-ce que votre page d'envoi et votre script php utilisent bien un charset ISO ? (html pour le premier, header() pour le second)
Merci JDW pour l'attention portée à mon post.

Oui, j'ai équipé mes pages d'un encodage, à savoir :


<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

pour ma page html et :


header("Content-type: text/html; charset=iso-8859-1");

pour mon script php, mais cela ne semble pas suffire.

Je commence à penser que l'option "contentType" de $ajax est un "fake" ^^
Après un rapide coup d'oeil à la doc de jQuery, les données seront en fait toujours envoyées en utf8, quelque soit le contentType.

"When sending data to the server, use this content-type. Default is "application/x-www-form-urlencoded", which is fine for most cases. If you explicitly pass in a content-type to $.ajax() then it'll always be sent to the server (even if no data is sent). Data will always be transmitted to the server using UTF-8 charset; you must decode this appropriately on the server side."
C'est bien ce que je pensais. Et du coup j'ai du mal à comprendre l'utilité de l'option "ContentType". Je continuerai donc à décoder les données du côté serveur, c'est plus fiable Smiley cligne

Merci beaucoup pour votre aide et à bientôt sur un autre post Smiley smile