[AJAX] "&" mal encodé peut-être ?
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 :
Code:
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);
}});
} |
Et voici le code de global_ajax.php :
Code:
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;
?> |
Tout de suite, je vous vois d'un oeil hagard : -QM-, -AMP- c'est étrange !
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.