2010-01-31 9 views
5

Wenn ich versuche, AJAX-Anfrage mit jQuery als Antwort zu machen, bekomme ich die HTML der gleichen Seite! hier ist eine Live-Vorschau (nicht bearbeiten aufgrund mich Fixing)CodeIgniter AJAX-Fehler, der dieselbe Seite zurückgibt

hier sind meine Dateien Edit: Ich Änderungen an einigen der Dateien vorgenommen haben

Hauptsteuerung:

Class Main extends Controller { 

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

function index(){ 

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

Oxila_index Ansicht (nur der JS Rest des hTML ist in dem obigen Link)

<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

Könnten Sie mehr Code hinzufügen? Die Ausgabe macht keinen Sinn.echo $ this-> input-> post ('lurl'); Sie haben ein $ this-> load-> view() irgendwo ... –

+0

also, was enthält die Ansicht, test.php? –

+0

Whoops, vergaß das, aber es enthält einfache Aviatrix

Antwort

1

Dies ist, was eine Person in den Foren mir

gesagt haben

Sie auf jeden Fall etwas an seinem Platz. Jeder einzelne Pfad, den ich in eintippe, nachdem die URL mich zur Hausseite führt.

Versuchen Sie, Ihr URL-Protokoll von AUTO zu etwas anderem zu ändern.

ich es auf „REQUEST_URI“ und es funktioniert (dies werden kann in der config/config.php gefunden)!

0

Sie brauchen keine Aussicht für Ihre Testfunktion haben und Ihr Modell die Post anfordern präsentieren isnt zu handhaben

0

stellen Sie sicher, Ihre Konfiguration diese Einstellung auf FALSCH hat;

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

ist es bei "FALSE" .. so ist es nicht das auch .. – Aviatrix

0

Warum öffentliche Funktion?

public function test(){ 

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

    } 

entfernen Öffentlichkeit und es ist nur eine Funktion als jemand anderes machen: http://codeigniter.com/user_guide/general/controllers.html

Versuchen Sie auch die gesamte URL in der JavaScript enthält, um zu versuchen, ob es funktioniert:

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

getan, dass kein Unterschied – Aviatrix

1

ich gerade versucht, Ihre Seite, und es funktioniert gut. FYI, ich benutze Google Chrome in Linux.

Ich habe zwar ein paar Notizen. Verschieben Sie zuerst die script von <head> an den unteren Rand der Seite über </body>. Dies ist die beste Vorgehensweise, da das Laden von Js-Code das gleichzeitige Laden anderer Seitenelemente, CSS und Bilder blockiert.

Zweitens, wenn Sie nichts auf der Serverseite ändern, verwenden Sie GET anstelle von POST. Um ein Zwischenspeichern im IE zu vermeiden, fügen Sie einfach einen anderen Parameter mit einem zufälligen Wert hinzu.

Drittens ist die Linie $("#output").html(""); nicht notwendig. Sie können die $("#output").html(response); setzen, weil .html() vorhandenen Inhalt im Container ersetzt. Kein Grund es zu leeren.

+0

ja ich reparierte es letzte Nacht krank fügen Sie die Lösung in ein bisschen, und danke für die Tipps :) – Aviatrix

Verwandte Themen