Bien le bonjour à tous !
Voilà le topo :
Un souci réside entre ajax et un & qui ne s'entendent pas.
Contexte :
Pour un panel d'admin, je gère les contenus d'un site.
Tout se fait en ajax.
Cheminement :
Lien pour modifier le contenu
-> [ajax] Choix du menu à modifier dans un select
-> [ajax après sélection du menu] Choix du type de contenu à gérer (Fiche de présentation et tarifs) avec chacun un bouton radio
-> [ajax après clic sur un des boutons radios] J'affiche un ckeditor qui auparavant fais un ajax dans la db pour récupérer le contenu existant afin de l'afficher dans son iframe.
Le point de trouble se situe dans la dernière action : récupérer le contenu.
Avant tout, sachez que les doutes premiers ne sont plus (le fichier existe bien...), et donc voici le code du ckeditor avec récupération du contenu :
Et voici le code de global_ajax.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function createEditor(c_men_id,c_ct_id) { if ( editor ) return; $.ajax({ url: 'ajax_13269b7bb7aa9cc07dc8b4e114699db42c92bcb7/global_ajax.php?file=content/get_content.php-QM-c_men_id='+c_men_id+'-AMP-c_ct_id='+c_ct_id, success: function(data){ // Create a new editor inside the <div id="editor"> editor = CKEDITOR.appendTo('editor'); editor.setData(data); }}); }
Tout de suite, je vous vois d'un oeil hagard : -QM-, -AMP- c'est étrange !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <?php try { #First configs require_once(dirname(__FILE__).'/../../config.php'); #Menu position require_once(dirname(__FILE__).'/../../men_position.php'); #Autoload require_once(dirname(__FILE__).'/../../autoload.php'); #Database object $db = DB_Manager::getInstance(); #Html templates require_once(dirname(__FILE__).'/templates.php'); $tpl = new Template($db); $html = ''; if(!isset($file)) { #File from ajax but not passed from control_tower if(isset($_GET['file'])) $file = str_replace('-QM-','?',str_replace('-AMP-','&',$_GET['file'])); } require_once(dirname(__FILE__).'/'.$file); } catch(DB_Exception $e) { $html = $e->get_message(); } echo $html; ?>
Vu que le nom du fichier est passé en paramètre si je rajoute ? ou &, une mésentente se produira pour passer les paramètres pour get_content.php.
En sommes, global_ajax.php s'occupe de transcrire le -QM- en ? et le -AMP- en & (oui, preg_match vaut mieux qu'un str_replace mais ne nous égarons pas) mais le & n'est pas compris.
Je suppose fortement le & d'être compris comme & se qui fausse la donne.
Dans cette idée, j'ai mis du html_entity_decode(), du urlencode(), du utf8_decode(), du "&"#038; mais rien de tout ça n'a pas fait effet.
Sachant que j'ai déjà tenter de faire appel à la page sans paramètre, celle-ci s'affiche bien donc le passage de paramètres et, je pense fortement, le fautif de l'histoire.
J'aurais besoin d'un coup de main ou d'une illumination de votre part, quelqu'un est-il partant pour tester autre chose ?
Merci d'avance à vous.
Au plaisir.
Steve.
Partager