Bonjour à toutes et tous,
Je viens de finir une fonction de type AJAX qui me permet de lancer, depuis une fenêtre modale bootstrap située dans une vue, une requête dans un controleur qui, au final, récupère une variable avec la méthode $variable = $_GET[''variable"]; et ainsi me retourne le nombre de ligne voulu.
La requête côté AJAX est en succès à chaque fois mais depuis peu, je m'aperçois que cela ne fonctionne plus. En effet, en ouvrant la console javascript sous chrome et en filtrant en XHR, j'ai un status 500 en rouge alors qu'il était toujours au vert en 200 (erreur sur variable : vide).
J'avoue que là, je nage un peu : quel serait le problème ?!?
Par avance, merci.
Cordialement.
Bonjour Bowser65,
Merci de m'avoir répondu.
En fait, je suis sous framework codeigniter. Au final, je voudrais qu'une fois la sélection effectuée, la requête envoie le tout avec cette variable à mon controller et ainsi la traiter pour avoir le résultat escompté en générant un pdf. Voici quelques bouts de code :
Pour la vue :
html...
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<select name="center" id="center" class="form-control" value="<?php echo set_value('center');?>" />
</select>
<button type="submit" class="btn btn-primary" id="submitbutton"><span class="glyphicon glyphicon-print"></span> Imprimer</button>
</div>
...et le code jquery...
<script>
$(function(){
$("#submitbutton").click(function(e){
var center = $('#center').val();
$.ajax({
url: '<?php echo site_url('pdf/pdf_dossard_par_centre'); ?>',
type: 'POST',
data: center,
success: function(){
alert("Requ\352te r\351ussie !\nCliquez sur -Ok-\npour lister les dossards du CS :\n"+data);
$('#myModal').modal('hide');
window.location.href = '<?php echo base_url(); ?>pdf/pdf_dossard_par_centre/?center='+data;
}
});
e.preventDefault();
});
});
</script>
Pour le controller :
function pdf_dossard_par_centre(){
// Si il y a une connexion à une session...
if($this->session->userdata('name') || $this->session->userdata('logged')){
// Sdis de l'utilisateur...
if($this->sdis_user != null): foreach($this->sdis_user as $s):
// Requête préparée...
$center = $_GET["center"];
$pre_req = 'SELECT num, sad, type, center, vehicle, mask, sdis FROM numbers WHERE sdis = "'.$s->sdis.'" AND center = "'.$center.'" ORDER BY center';
// Exécution de la requête...
$data['numbers'] = $this->materials_model->common_request($pre_req);
// Nombre total de dossards...
$total_dossards_par_centre = $this->db->get_where('numbers', array('sdis =' => $s->sdis, 'center =' => $center))->num_rows();
$content = 'ici le traitement du contenu du pdf...';
endforeach; endif;
$this->load->library('html2pdf');
$html2pdf = new HTML2PDF('L', 'A4', 'fr', true, 'UTF-8', 0);
$html2pdf->WriteHTML($content);
ob_end_clean();
$html2pdf->Output('dossard par centre de secours.pdf');
} else { redirect('/'); }
}
Tout fonctionnait au départ et depuis ce matin, j'ai cette erreur status 500 (variable non reconnue pour la requête).
J'espère avoir donner plus de détails : pas facile d'expiquer...
Merci d'avance !!!
Cordialement.
Bonjour,
Je pense que j'ai trouvé l'erreur.
Dans la partie javascript, l'URL et la variable étaient envoyées avec un type POST : j'ai changé le tout avec un type GET : voici le code maintenant :
<script>
$(function(){
$("#submitbutton").click(function(e){
alert('On commence...');
var center = $('#center').val();
alert(center);
var url = '<?php echo base_url(); ?>pdf/pdf_dossard_par_centre/?center=' + center;
alert(url);
$.ajax({
url: url,
type: 'GET',
success: function(){
$('#myModal').modal('hide');
alert('Good !!!');
window.location.href = '<?php echo base_url(); ?>pdf/pdf_dossard_par_centre/?center=' + center;
}
});
e.preventDefault();
});
});
</script>
En tout cas, cela fonctionne !!!
Merci à Bowser65 quand même !
Bonne journée.
Cordialement.
Une erreur 500 peut venir d'un problème de syntaxe dans ton code PHP.
Dans ta console si tu clique sur ta ligne avec l'erreur 500 tu pourras avoir plus de precision sur ton erreur en regardans l'onglet reponse.
Tu peux egalement débbuguer en tentant d'accéder directement à ton controleur (sans passer en AJAX) comme préciser plus haut.