Bonjour à tous,
J'ai un truc étrange qui ne s'effectue que sur une bête de course. En effet, je n'ai pas pu reproduire l'erreur hormis sur un ordinateur extrêmement rapide (par rapport au autre testé).
Côté serveur j'ai un PHP qui envoi un XML avec les headers et tout et tout (je ne mets pas les include & co, juste l’essentiel):
<?php
$xmlStr = '<?xml version="1.0" encoding="UTF-8" standalone="no"?><DONNEES>';
$xmlStr .= '<VALIDE>FALSE</VALIDE>';
$xmlStr .= '<TEXTE>PAS CONNECTE</TEXTE>';
$xmlStr .= '</DONNEES>';
header ("Content-Type:text/xml");
echo $xmlStr;
exit;
?>
Dans un ajax jQuery j'ai :
[javascript]$.ajax ({
url : "ajax_utilisateurs.html",
data : {t: "identification", c : sha256(courriel), m :sha256(motDePasse)},
type : "post",
cache : false,
complete : function (xhr, result) {
if (result != "success") return;
var reponse = xhr.responseText;
if ($(reponse).find('VALIDE').text() == "TRUE") {
//traitement true
}
else {
//traitement false
}
$('.connexion .reponse').html($(reponse).find('TEXTE').text());
...[/javascript]
ceci fonctionne Mais quand je mets :
[javascript]$.ajax ({
url : "ajax_utilisateurs.html",
data : {t: "identification", c : sha256(courriel), m :sha256(motDePasse)},
type : "post",
cache : false,
complete : function (xhr, result) {
if (result != "success") return;
var reponse = xhr.responseXML; //changement ici
if ($(reponse).find('VALIDE').text() == "TRUE") {
//traitement true
}
else {
//traitement false
}
$('.connexion .reponse').html($(reponse).find('TEXTE').text());
[/javascript]
La réponse $(reponse).find('VALIDE').text() retourne une erreur jQuery :
Code : Tout sélectionner
balise ne correspondant pas. Attendu : </input>. Système (2)
<div><input></div>
"La balise <div><input></div> n'est pas celle attendue, certes mais je ne sais pas d'où elle sort !. Pourtant le traitement est bien effectué.
Le message d'erreur apparait dans la console (firebug) et c'est tout. (du moins j'en ai l'impression)
En fait, cela apparait dès que la fonction "find" de jquery est utilisée (c'est pourquoi le (2) est indiqué : dans le reste de la fonction il y a deux appels de la fonction "find") et cela ne se produit qu'avec un ordinateur "rapide".
Avez vous des idées ?