2010-01-31 10 views
5

cuando intento hacer una solicitud AJAX con jQuery como respuesta, ¡obtengo el html de la misma página! aquí es una vista previa en vivo (editar no está disponible debido a mí fijándolo)Error CodeIgniter AJAX que devuelve la misma página

aquí están mis archivos Edición: He realizado cambios en algunos de los archivos

controlador principal:

Class Main extends Controller { 

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

function index(){ 

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

Ver Oxila_index (sólo el resto de la JS html está en el enlace anterior)

<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> 

controlador Ajax

Class Ajax extends Controller { 

    function process(){ 

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

¿podría agregar más código? La salida no tiene sentido.echo $ this-> input-> post ('lurl'); Usted tiene $ this-> load-> view() en alguna parte ... –

+0

entonces, ¿qué contiene la vista, test.php? –

+0

whoops, se olvidó de eso, pero contiene Aviatrix

Respuesta

1

Esto es lo que una persona en los foros me dijo

que sin duda tiene algo en su lugar. Cada ruta individual que escribo en después de la url me lleva a la página de inicio .

Intente cambiar su Protocolo de URL de AUTO a otra cosa. (Esto se puede encuentra en el archivo config/config.php)

lo cambié a “REQUEST_URI” y funciona!

0

usted no tiene un punto de vista de su función y de su modelo de prueba para manejar la petición POST isnt presentar

0

asegurarse de que su configuración tiene esta configuración para FALSO;

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

está en "FALSO" ... así que no es eso también ... – Aviatrix

0

¿Por qué función pública?

public function test(){ 

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

    } 

Retire pública y sólo lo hacen una función como cualquier otra persona: http://codeigniter.com/user_guide/general/controllers.html

Pruebe también para incluir toda la URL en el Javascript para probar si funciona:

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

hecho eso, no hay diferencia – Aviatrix

1

he intentado su página, y funciona bien. FYI, utilizo Google Chrome en Linux.

Aunque tengo algunas notas. Primero, mueva script desde <head> hasta la parte inferior de la página, arriba de </body>. Esta es la mejor práctica, ya que cargar el código js bloqueará la carga concurrente de otros elementos de página, css e imágenes.

En segundo lugar, si no cambia nada en el lado del servidor, use GET en lugar de POST. Para evitar el almacenamiento en caché en IE, simplemente agrega otro parámetro que tenga un valor aleatorio.

En tercer lugar, la línea $("#output").html(""); no es necesaria. Puede poner el $("#output").html(response); porque .html() reemplazará cualquier contenido existente dentro del contenedor. No hay necesidad de vaciarlo.

+0

sí, lo arreglé anoche, añadiré la solución en un momento, y gracias por los consejos :) – Aviatrix

Cuestiones relacionadas