Je suis en train de réaliser un petit outil en PHP/MySQL et Ajax.

Dans une page, j'ai un champs select avec à coté un champs de type Text et un bouton "envoyer".

Quand on rentre du texte dans le champs et qu'on clic sur "envoyer", un requete est envoyé au serveur pour enregistrer le texte en BDD puis le script php renvoie en XML le texte et l'id de l'enregistrement. Ces données doivent etre rajouter dans le select.

Pour ce qui est de l'envoie, tout se passe bien, l'enregistrement en BDD se passe bien et le script renvoie bien du XML.

Dans mon javascript, quand je fait un "alert(responseXML)", j'ai bien à l'affichage:

<?xml version='1.0'?>
<resultat>true</resultat>
<opt id='1'>directeur</opt>
un responseXML me renvoie [object XMLDocument]

mais je me retrouve quand même avec l'erreur:
Erreur : données incompréhensibles après l'élément de document
Fichier source : http://127.0.0.1/annuaire/fonctions/...pe_contact.php
Ligne : 3, Colonne : 1
Code source :
<opt id='7'>autre</opt>^
Ca fait deux heures que je suis dessus à pas trouver quoi faire, merci de m'aider.

voici le javascript:

var http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

if (!http_request) {
alert('Abandon Impossible de créer une instance XMLHTTP');
return false;
}
//alert(http_request.readyState);
parameters=get('new'+emplacement);
http_request.onreadystatechange = function() { modifyContents(http_request, emplacement); };
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");
//alert(parameters);
http_request.send(parameters);
}

function modifyContents(http_request, emplacement) {

//alert(http_request.readyState);
//alert(http_request.status);
if (http_request.readyState == 4) {
//alert(http_request.status);
if (http_request.status == 200) {
var XMLDoc = http_request.responseXML ;
alert(http_request.responseText);
alert(XMLDoc);
var tabresultat= XMLDoc.getElementsByTagName('resultat').item(0);
var resultat=tabresultat.firstChild.nodeValue;
alert(resultat);

var option = XMLDoc.getElementsByTagName("opt");
for (var i = 0; i < option.length; i++) {
var tabvaleur = option[i].getElementsByTagName("valeur");
var valeur=tabvaleur[0].firstChild.nodeValue;
var tabid = option[i].getElementsByTagName("id");
var id=tabid[0].firstChild.nodeValue;
alert(valeur+", "+id);
}



//ajouter_choix(emplacement,
} else {
alert('Un problème est survenu avec la requête.');
}
}

}
et le script php:

<?php
session_start();
header( 'Content-Type:text/xml;charset:UTF-8' );
$typecontact=$_POST['nomtypecontact'];
$sql_insert_type_contact="insert into annuaire_type_contact values ('', '$typecontact')";
require("inc_connect_db.php");
$res_insert_type_contact = mysql_query($sql_insert_type_contact);
echo("<?xml version='1.0'?>\n");
if ($res_insert_type_contact){
$id_type_contact=mysql_insert_id();
mysql_close($cnx);
echo("<resultat>true</resultat>\n");
echo("<opt id='$id_type_contact'>");
echo(utf8_encode($typecontact));
//echo("<id>$id_type_contact</id>\n");
echo("</opt>\n");
} else {
echo("<resultat>false</resultat>\n");
}
?>