2010-01-31 3 views
5

lorsque j'essaye de faire une requête AJAX avec jQuery comme réponse je reçois le html de la même page! est ici un aperçu en direct (modifier pas disponible en raison de me fixer)CodeIgniter bug AJAX retournant la même page

ici sont mes fichiers Edit: J'ai apporté des modifications à certains des fichiers

contrôleur principal:

Class Main extends Controller { 

function Main() 
{ 
     parent::Controller(); 
} 

function index(){ 

    $this->load->view('oxila_index'); 
}} 

vue Oxila_index (juste le reste du JS html est dans le lien ci-dessus)

<script type="text/javascript"> 
     $(document).ready(function(){ 
      $("#inv").hide(); 
     }); 
     $(document).ready(function(){ 
      $("#submit").click(function(evt){ 

       $.post("/ajax/process", { 
        url: $("#url").val() 
       }, function(response){ 
         $("#output").html(""); 
        $("#inv").show("slow"); 
         $("#output").html(response); 
       }, "text"); 
       evt.preventDefault(); 
      }); 
     }); 
    </script> 

Ajax Controller

Class Ajax extends Controller { 

    function process(){ 

     $data['url'] = $this->input->post('url'); 
     $this->load->view('test',$data); 
     echo "hello world"; 
    } 
} 
+0

pourriez-vous ajouter plus de code? La sortie n'a pas de sens.echo $ this-> input-> post ('lurl'); Vous avez un $ this-> load-> view() quelque part ... –

+0

alors, que contient la vue, test.php? –

+0

whoops, oublié cela, mais il contient simple Aviatrix

Répondre

1

C'est ce qu'une personne dans les forums m'a dit

vous avez certainement quelque chose en place. Chaque chemin que je tape après l'url me mène à la page d'accueil . Essayez de modifier votre protocole d'URL de AUTO à autre chose. (Cela peut être dans le fichier config/config.php)

je l'ai changé à « REQUEST_URI » et ça marche!

0

Vous n'avez pas vue pour votre test Fonction et votre modèle pour gérer la demande Publier isnt présente

0

assurez-vous que votre config a ce paramètre à FAUX;

$config['compress_output'] = FALSE; 
+0

son à "FAUX" .. donc ce n'est pas trop .. – Aviatrix

0

Pourquoi une fonction publique?

public function test(){ 

    echo $this->input->post('lurl'); 

    } 

Retirer du public et juste en faire une fonction que quelqu'un d'autre: http://codeigniter.com/user_guide/general/controllers.html

Essayez aussi d'inclure l'URL complète dans le javascript pour essayer si ça marche:

$.post("http://yourwebsite/oxila/test/") 
+0

fait, aucune différence – Aviatrix

1

Je viens d'essayer votre page, et ça marche bien. Pour info, j'utilise google chrome sous Linux.

J'ai quelques notes cependant. Tout d'abord, déplacez le script de <head> vers le bas de la page, au-dessus de </body>. C'est la meilleure pratique, car le chargement du code js bloquera le chargement simultané d'autres éléments de la page, css et images. Deuxièmement, si vous ne modifiez rien du côté du serveur, utilisez GET au lieu de POST. Pour éviter la mise en cache dans IE, ajoutez simplement un autre paramètre ayant une valeur aléatoire.

Troisièmement, la ligne $("#output").html(""); n'est pas nécessaire. Vous pouvez mettre le $("#output").html(response); car .html() remplacera tout contenu existant à l'intérieur du conteneur. Pas besoin de le vider.

+0

oui je l'ai réparé la nuit dernière malade ajouter la solution dans un peu, et merci pour les conseils :) – Aviatrix