begin process at 2012 05 29 05:43:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Autre

 > 

Envoi de code HTML en Ajax (méthode POST) et éditeurs WYSIWYG


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Envoi de code HTML en Ajax (méthode POST) et éditeurs WYSIWYG

dimanche 31 janvier 2010 à 11:09:34 | Envoi de code HTML en Ajax (méthode POST) et éditeurs WYSIWYG

mioumiounorris

Bonjour !
Je suis en train de réaliser la partie admin d'un site, et j'utilise TinyMCE afin de pouvoir publier mes articles.
Je me suis mis en tête de soumettre mon formulaire en Ajax pour l'enregistrer en base de données (MySQL). Ca fait maintenant trois jours que je lis des tonnes de tutos sur le sujet et que je test plein de solutions.

Evidemment, les tutos sont toujours basés sur des exemples simples qui marchent toujours et je les comprends bien.

Maintenant, quand il s'agit d'envoyer le contenu d'un textarea en gardant les caractères ISO-8859-1 et aussi les simples / double quotes , les balises ...etc.. c'est une autre histoire.

J'ai essayé avec JQuery et là je tente sans framework.

Grâce à Firebug, j'ai compris que l'ajax m'envoyais des caractères étranges qui me faisaient tout planter.
Ensuite j'avais de gros problèmes avec les quotes. Car je dois les récupérer en POST pour les balancer dans une requête "INSERT" avec PDO.
Evidemment, tous les guillemets et apostrophes coupent ma requête.

J'ai réussi à tomber sur une solution, mais j'aurais besoin de votre aide pour savoir si elle est vraiment adaptée. Et comme j'imagine que non, si je pouvais avoir des pistes pour bien comprendre et réussir mon truc ça serait top.
Voici comment je procède ...

index.php (la page formulaire)
Code HTML :
...
<div id="cont"></div>
    
<fieldset>
<form>
    <textarea id="txtArea" name="txtArea" cols="100" rows="10"></textarea>
</form>
</fieldset>
<a href="#" id="btnSendAjax" class="btn1">Envoyer</a>
...

(évidemment il y a un doctype et un charset "8859-1".Si ma page porte l'extension php, c'est que je fais d'autres tests en même temps)

le javascript inclu dans ma page index.php :
Code Javascript :
$(document).ready(function(){
    $('#btnSendAjax').click(function(){
        sendJajax();
    });

    //trouvé sur le net pour pour simuler addslashes et avoir mes guillemets.
    function addslashes(str) {
        return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0");

    }

    function sendJajax(){
        //##### Création de l'objet XMLHttpRequest
        try {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");    // Essayer Internet Explorer 
        }
        catch(e){
            xhr = new XMLHttpRequest();  // Autres navigateurs
        }
        
        
        xhr.onreadystatechange  = function()
        { 
            if(xhr.readyState  == 4)
            {
                if(xhr.status  == 200){
                    //var doc = xhr.responseXML;  //  Assigner le fichier XML à une variable
                    //var element = doc.getElementsByTagName('root').item(0);  //  Lire le premier élément avec DOM
                    //document.ajax.dyn.value= element.firstChild.data; //  Copier le contenu dans le formulaire
                    var doc = xhr.responseText;
                    
                    $('#cont').html(doc);
                }else 
                    document.ajax.dyn="Error code " + xhr.status;
            }
        };

varTitre = "Mon titre accentué pour voir.";
varMess = $('#txtArea').val() //pour un textarea normal sinon avec tinyMCE j'utilise "getContent()"

myData = "postTitre="+varTitre+"&postMessage="+addslashes(varMess);

xhr.open("POST","scr-traitmnt.php",true);
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send(myData);
return false;
});


puis finalement, mon script PHP de traitement qui doit me renvoyer du HTML pour le lire en Javascript, et enregistrer le HTML mis en forme dans ma bdd.
Code PHP :
<?php
    header("content-type: application/xml; charset=iso-8859-1");

    $resSuccess = '';
    $message = '???';
    $titre = '???';

    if(isset($_POST['postTitre']) && $_POST['postTitre'] !=''){
        if(isset($_POST['postMessage']) && $_POST['postMessage'] !=''){
            
            //On a tout reçu faut l'traiter
            $resSuccess = 'Tout s\'est bien passé';
            $message = utf8_decode($_POST['postMessage']);
            $titre = utf8_decode($_POST['postTitre']);
            
        }else{
            $resSuccess .= 'y\'a pas de message ?!?!';
        } 
    }else{
        $resSuccess .= 'y\'a pas de titre ?!?!';
    }
    
    $xml  = '<?xml version="1.0" encoding="iso-8859-1"?>';
    $xml .= '<root>';
    $xml .= '<ressuccess>'.$resSuccess.'</ressuccess>';
    $xml .= '<restitre>'.$titre.'</restitre>';
    $xml .= '<resmessage>'.stripslashes($message).'</resmessage>';
    $xml .= '</root>';
    
    echo $xml;
?>


Voilà où j'en suis actuellement. (Désolé pour la longueur)
Déjà, est-ce que j'ai choisi le bon "Content-Type" dans mon setRequestHeader ?
Ensuite, mon script php renvoi t-il le bon type ? ne devrais-je pas utiliser UTF8 ?
Mon script PHP renvoi actuellement du XML et pourtant, au résultat je ne vois que les balises html
Est-ce que je devrais plutôt lui faire renvoyer le contenu "pur" de mes variables ? (avec que du html et pas de xml) ?

Enfin bon ... vous l'aurez compris, je suis un débutant en Ajax qui a un peu de mal là.


Cette discussion est classée dans : code, php, html, xml, xhr


Répondre à ce message

Sujets en rapport avec ce message

présenter xml dans html [ par hdh ] Bonjour, Voila une question qui vous parraitra bien simple : comment afficher du xml correctement dans un navigateur web sans passer par du php.Je vou Remplissage de "div" fonctionnant sous IE mais pas sous Firefox [ par AllCoKe ] Salut,J'utilise sur ma page le script suivant pour remplir 2 balises div différentes : [code]var xhr = null; function getXhr(){     if(window.XMLHtt prb avec Ajax (ou incomprension du fonctionnement des FONCTIONS) [ par gomoz ] Je m'essaye aux thechniques Ajax pour me faciliter un peu la vie sur un petit programme php que je veux ameliorer.Il y a juste une chose que j'arrive PHP -> récupération du code HTML [ par apside ] bonjour,nous avons une application développée en PHP, et nous devons récupérer le code html de la page en cours dans un fichier en local.Or seuls les récupéré le code html généré par le php [ par matmax ] J'aimerai ouvrir une page qui contient seulement les données essentielles (générées en php). Donc, peut être qu'il est possible de récupérer ( en java afficher/masquer code html [ par eax ] salut je cherche à afficher et à masquer un tableau html en cliquant sur une imagej'utilise actuellement un code php mais c chiant car ça recharge la AJAX, textarea et envoie de code html [ par Jolafreem ] Bonjour,je développe une interface d'administration en AJAX.Voici le problème auquel je suis confronté :J'ai un textarea qui contient du code HTML et Envoyer plusieurs variables dans le open [ par fabricioliking ] Bonjour, Voila j'aimerai pouvoir envoyer grâce au javascript dans une page php deux variables.voici un extrait du code contenant mon formulaire : [COD Affichage XML via Ajax d'une et une seule balise, dans ma page html [ par yourchenko ] Bonjour! j'éssai depuis 3 jours de faire fonctionner le script qui aurait pour objectif d'afficher la balise n0num dans ma page web. j'ai un premier Fonction php couplée à ajax : Ca ne fonctionne pas pourquoi ??? [ par StevenL86 ] Hello, Me revoilà avec mes cas foireux [^^happy8]. Ce coup çi,j'ai écrit un script php que voici :[code=php] $var=$_GET['id']; $val=$var+1; $texte=$_G


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales