Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

mon code consiste à envoyer une donnée vers un controller qui va la concatener avec une chaîne et retourner le résultat
( je travail avec codeIgniter )
j'ai une vue (myView.php) et un controlleur (myController.php)

  • my view.php
<!DOCTYPE html>
<html>
    <head>
        <title>myView</title>
        <script type="text/javascript" src="<?php echo base_url().'assets/js/jquery.js' ?>"></script>
        <script type="text/javascript">
        $(document).ready(function()
        {
            $('#bttn').click(function()
            {
                var variable = $('#name').val();
                $.ajax(
                {
                    type:'POST' , 
                    data:{ name : variable } , 
                    url:'<?php echo site_url('myController/message'); ?>',
                    success:function(result)
                    {
                        $('#result').html(result);
                    },
                    error: function() 
                    {
                        $('#result').html('<p>An error has occurred</p>');
                    }
                });
            });
        });
        </script>
    </head>
    <body>
        name : &nbsp;&nbsp;&nbsp; 
        <input type="text" id="name" placeholder="Name"/>
        <input type="button" value="Submit" id="bttn"/>
        <h1 id="result"></h1>
    </body>
</html>
  • myController.php
<?php
    class MyController extends CI_Controller
    {
        public function index()
        {
            $this->load->view('myView');
        }
        public function message()
        {
            $name = $this->input->post('name');
            return 'Good evening Mr' . $name . '. I\'m Dr Hannibal Lecter';
        }
    }
?>

Ce que je veux

je m'attends à ce que la balise h1 affiche le message "Good evening Mr (nom entré dans la zone texte) I'm Dr Hannibal Lecter'"

Ce que j'obtiens

mais j'obtiens le message d'erreure que j'ai spécifié.
et dans la console, j'obtient ceci:
XMLHttpRequest cannot load http://[::1]/AjaxTest/index.php/myController/message. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.

6 réponses


betaWeb
Réponse acceptée

@Huggy Tu peux normalement le contourner en 'settant' la valeur du 'Access-Control-Allow-Origin' à '*', mais ce n'est pas super :/

Salut,

Il te faut passer un paramtre dans le header de ta requête HTTP afin d'autoriser le 'Access-Control-Allow-Origin', je pense qu'une petite rechercher rapide sur Google te permettra de trouver la solution ;)

Une erreur 'Access-Control-Allow-Origin' indique que ton url ajax n'est pas du même domaine que ta page (c'est interdit)
ton erreur vient de ta fonction site_url('myController/message') qui renvoie l'ip v6 au lieu du nom de domaine

Merci betaWeb, ça marche maintenant

@betaWeb ça fonctionne mais j'ai l'impression qu'on contourne le problème, par ce que mettre l'ip dans les liens c'est faire de la merde

@Huggy +1; Après pour des tests ça peut passer, mais en prod c'est dangereux c'est clair !