Forum > PHP > Ajax - Je ne m'y fait pas

Ajax - Je ne m'y fait pas

ok Le problème posé sur ce sujet a été résolu.
Auteurs Messages
Page : 1
icone offline Chopin # Posté le 23/08/2009 à 21h25
avatar de Chopin
Rang: membre
Salut à tous!

J'ai un petit souci pour utiliser de l'ajax afin de réaliser une prévisualisation d'avant poste. Pour le moment j'ai réussi à faire en sorte que lorsque l'on clique sur un bouton "Prévisualisation" qu'un fichier .txt contenant le texte formaté avec le BBcode de la prévisualisation soit automatiquement créer. Le plus dur est fait me direz-vous, et bien non. Du moins, pas pour moi car je suis en mode galère pour faire en sorte que dans le même instant le contenu du fichier soit récupéré et afficher dans la page.

Pour faire simple, voici déjà la page contenant l'ajax:
Code:

function getXMLHttpRequest()
{
var xhr = null;

if (window.XMLHttpRequest || window.ActiveXObject)
{
if (window.ActiveXObject)
{
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
xhr = new XMLHttpRequest();
}
}
else
{
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}

return xhr;
}



Voici le javascript qui crée le fichier:
Code:

function previsualisation()
{

message = document.getElementById("script_desc_longue").value;

var xhr = getXMLHttpRequest();

xhr.open("POST", "ajax/previsualisation.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("msg="+message+"");
}



Et enfin, voici le contenu HTML:
Code:

<div align="center">

<FORM name="ajax" method="POST" action="">
<p>
<textarea id="script_desc_longue" name="script_desc_longue" rows="10" cols="40"></textarea>
<br />
<INPUT type="submit" value="Envoyer">
<INPUT type="button" value="Prévisualisation" onclick="previsualisation();">
</p>
</FORM>

</div>

<div id="previsualisation"></div>



Au début, je pensais utiliser ça mais sans succès.
Code:

xhr.open("GET", "ajax/previsualisation.txt", true);
xhr.onreadystatechange=function()
{
if(xhr.readyState == 4)
{
document.getElementById("zone").innerHTML= xhr.responseText;
}
};

xhr.send(null);



Voila voila, j'espère vraiment que quelqu'un saura m'aider car là je suis complétement perdu. J'ai l'impression d'avoir tout essayé.

Merci par avance!
Cµ0p1N
icone offline stc # Posté le 25/08/2009 à 19h22
avatar de stc
Rang: membre
Salut .
Code:
xhr=null;
xhr=getXMLHttpRequest();
datas="msg="+message;
sendReq(xhr,'ajax/previsualisation.php');
//
function sendReq(objReq,file) {
objReq.open('POST',file,true);
objReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
objReq.onreadystatechange=treat_response;
objReq.send(datas);
}
function treat_response() {
if(xhr.readyState==4) {
document.getElementById("zone").innerHTML= xhr.responseText;
}
}

J'avoue je suis pas un spécialiste mais ça devrait marcher.
Une fois j'ai cherché un bug javascript pendant 1 heure et ça venait de la déclaration de la variable (qui n'était pas globale): donc penser a ça aussi.

J'espère que ça va marcher (mets des alert('ok'); a chaque étapes pour mieux voir ou se situe le bug.
icone offline Chopin # Posté le 26/08/2009 à 12h03
avatar de Chopin
Rang: membre
Salut STC et merci de m'avoir répondu!

En faite, entre temps j'ai trouvé la solution. J'ai opté pour ça:
Code:
function affiche_previsualisation(callback)
{
var xhr = getXMLHttpRequest();
message = encodeURIComponent(document.getElementById("script_desc_longue").value);

xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
callback(xhr.responseText);
}
};

xhr.open("POST", "ajax/previsualisation.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("msg="+message+"");

}

function readData(sData)
{
document.getElementById("previsualisation_corp").innerHTML = sData;
document.getElementById('previsualisation').style.display="block";
}


La page "previsualisation.php" applique mon BBcode au contenu du poste et toujours dans la même page j'utilise un simple echo.

Voila :)
Cµ0p1N
Page : 1