Bonjour,
J'ai quelque problème pour transmettre certaine variable à un script php avec xmlHttpRequest. tout d'abord voila le petit script que j'ai écrit pour simplifier la présentation de mon programme.
et la page du serveur<html>
<head>
<SCRIPT src="./include/ajax.js" type="text/javascript"></script>
<SCRIPT>
function valider() {
xhr=getXhr()
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
reponse=xhr.responseXML;
var root = reponse.getElementsByTagName('rep').item(0);
alert(root.getElementsByTagName('text').item(0).firstChild.nodeValue);
alert(root.getElementsByTagName('text2').item(0).firstChild.nodeValue);
}
}
var documentxml = document.implementation.createDocument("", "", null);
var testnode = documentxml.createElement('test');
var nom = documentxml.createElement('nom');
testnode.appendChild(document.createTextNode(document.getElementById('test').value));
nom.appendChild(testnode);
documentxml.appendChild(nom);
var serializer = new XMLSerializer();
var xml = serializer.serializeToString(documentxml);
postDataAsynchronous("antenne2.php","xml="+xml+"&test="+document.getElementById('test').value,xhr);
}
</script>
</head>
<body>
<input type="text" id="test">
<input type="button" value="OK" onclick="valider()">
</form>
</form>
</body>
</html>
La page html transmet simplement un chaine de caractère au serveur, qui lui renvoye aussitot. Le problème ne se situe pas dans l'implémentation mais dans le fait que certaine chaine de caractère sont modifié lors de la réception par le serveur de variable client.<?
header('Content-Type: text/xml');
$dom = new DomDocument();
$dom->loadXML($_POST['xml']);
$nom=$dom->getElementsByTagName('nom')->item(0)->firstChild->nodeValue;
$test=$_POST['test'];
echo "<rep><text>$nom</text><text2>$test</text2></rep>";
?>
Par exemple : si j'essaye de transmettre la chaine %00 , le serveur me renvoie la chaine \0 ou encore 00%77 donne 00w.
a noter aussi que si transmet 00%999 le script php donne l'erreur suivante
Edit pour l'erreur php utf8_encode() corrige le problème mais renvoye toujours des chaines bizarres<b>Warning</b>: DOMDocument::loadXML() [<a href='function.DOMDocument-loadXML'>function.DOMDocument-loadXML</a>]: Input is not proper UTF-8, indicate encoding !
Bref j'ai du mal a comprendre l'origine du problème, donc si vous avez des pistes
Merci
Partager