2011-04-12 11 views
8

En mi opinión, tengo una llamada AJAX:CodeIgniter/jQuery - llamada Ajax regresa página HTML completa en lugar de mi eco

$(".previous").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "planner/get_cal", 
      data: {current_month: current_month}, 
      success: function(msg){ 
       alert(msg); 
      } 

     }); 

la función get_cal en mi controlador planificador:

function get_cal() 
{ 
    echo "dinosaurs"; 
} 

Sin embargo, en lugar de devolver "dinosaurios", devuelve una página HTML completa. No puedo entender por qué. ¿Pensamientos? Muchas gracias.

+0

¿Tiene un diseño vinculado a su controlador que lo renderizaría? – mikelbring

+0

¿Qué obtienes cuando lo intentas manualmente desde un navegador? – Vamsi

+0

@krishna, ir a la página get_cal manualmente me da una página en blanco con "dinosaurios", como era de esperar. – cabaret

Respuesta

10

Resolví esto mediante el uso de una barra diagonal como se sugiere en los comentarios a mi pregunta.

$.ajax({ 
    type: "POST", 
    url: "/planner/get_cal", 
    dataType: "text", 
    data: {current_month: current_month}, 
    success: function(msg){ 
    alert(msg); 
    } 
});   
0

intente configurar el tipo de datos de "texto"


$.ajax({ 
    type: "POST", 
    url: "planner/get_cal", 
    data: {current_month: current_month}, 
    dataType: "text", 
    success: function(msg){ 
     alert(msg); 
    } 
}); 
0

Cuando se utiliza la estructura de CodeIgniter Controler segmentos URI/Método he encontrado que es mucho más fácil de usar como mi ../../controller/method URL en solicitudes jquery ajax. También recomiendo especificar un tipo de datos para que la cadena sea analizada y devuelta como un objeto.

Aquí hay un ejemplo;


$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: "../../controller/method", 
    success: mySuccessFunction 
}); 
0

Para cualquier persona que está utilizando el Zend Framework, que estaba experimentando los mismos problemas que la respuesta AJAX regresaba el código HTML completa en lugar de la respuesta json_encode(). Esto se resolvió añadiendo lo siguiente a mi controlador:

if ($this->getRequest()->isXmlHttpRequest()) 
    { 
     $this->_helper->layout()->disableLayout(); 
     $this->_helper->viewRenderer->setNoRender(true); 
    } 
0

Este tipo de problema viene cuando el archivo php y archivo html no están en el camino adecuado para que el servidor Apache podría analizar archivos php. Sin mencionar el tipo: 'texto' y cualquier otro formato también, ajax funcionará. Pero asegúrese de que su servidor esté llegando al archivo php. De lo contrario, todo el archivo se tratará como texto y se devolverá.

3

También puede obtener mediante la adición de salida después de resonar en su archivo php, como a continuación:

function get_cal() 
{ 
    echo "dinosaurs";exit; 
} 

Se trabajará. :)

0

Sólo quería mencionar: la url realmente dependerá de cómo tenga su .htaccess y la estructura de la carpeta de configuración. Así que la mejor manera es intentar varias direcciones URL, es decir:
../../controller/method
../controller/method
server_folder/index.php/método controlador/
http://example.com/server_folder/index.php/controller/method
y luego elige el que mejor funciona en una situación dada.

Cuestiones relacionadas