2012-05-11 8 views
5

Tengo un problema con codeigniter y JQuery Ajax Post.Error de devolución Jquery AJAX 500 a pesar de la ejecución correcta en el lado del servidor

Mi javscript controlador

 $('.remove').click(function(){ 
     var category=event.target.id; 
     var id=$('input[name=article_id]').val(); 
     var p={}; 
     p['id']=id; 

     $.ajax({ 
      type: "POST", 
      url: "/backend.php/blog/removeCategories", 
      async:true, 
      cache:false, 
      data: {id: id, category: category } 
      }).done(function(msg){ 
       jQuery('#category_list').load('/backend.php/blog/refreshCategories/',p,function(str){}); 
      }); 

Mi de CodeIgniter

function removeCategories(){ 
     $id=$_POST['id']; 
     $category_id=$_POST['category']; 

     $this->article->removeCategory($category_id,$id); 
    } 

no puedo conseguir la función ajax para trabajar, porque siempre hay un error 500 recibida del servidor. Aunque firebug devuelve que hay un error al cargar los recursos, la función removeCategories se ejecutó de todos modos.

+0

el lado del servidor no está haciendo el registro, y si bien hace algo que también muere y tiene un error fatal. Habilite el registro de errores de PHP y tenga cuidado con los errores fatales. – hakre

Respuesta

3

Su error podría estar en el modelo. Utilice chrome dev toolkit para averiguar cuál es el contenido de la página devuelta. HTTP CODE 500 significa error del servidor, normalmente debido a un problema de sintaxis dentro de PHP en alguna parte.

También, En su llamada ajax debe usar success: y error:. Esto le permitiría detener la ejecución si el código arroja un error.

¿Por qué llamas a backend.php/ ¿No estás usando index.php ??

Otra forma de hacerlo es en lugar de usar .load(), simplemente puede volver a pasar el html desde el controlador y luego en success: function(data){} anexarlo al contenedor. Esto le permitiría controlar si la llamada ajax fue error() o success() y actuar en consecuencia.

+0

Hola Mike, backend.php fue una modificación que hice a CI para ejecutar dos aplicaciones en una única instalación de CI. Gracias, me acabas de escribir para profundizar en los códigos de errores de sintaxis. –

+0

Hola chicos, ya he resuelto el problema anterior. Resulta ser un problema en mi CI_model. Me encantaría compartir cómo encontré el problema, pero actualmente me falta reputación para publicar una respuesta. Pero gracias mucha gente. Kudos =) –

+0

¿qué tal si acepta una de nuestras respuestas para orientarlo en la dirección correcta? Dado que estaba en el modelo, digo que me lo das;) – gorelative

6

Asegúrese de que sus datos se pasen correctamente realizando los siguientes cambios en la opción data.

$.ajax({ 
      type: "POST", 
      url: "/backend.php/blog/removeCategories", 
      async:true, 
      cache:false, 
      data: {"id": id, "category": category } 
      }).done(function(msg){ 
       jQuery('#category_list').load('/backend.php/blog/refreshCategories/',p,function(str){}); 
      }); 

La forma en que lo tienes codificada, la clave de cada par de valores clave es ser definida según el valor de la variable.

+1

Sí, estoy de acuerdo, misatake común al hacer esas clases. También use el violín para ver lo que dice el servidor. La mayoría dice que necesita especificar el ID. Si ejecutó el código de todos modos, debe atraparlo porque no se debe ejecutar si se retuvo el error. 500 – ppumkin

+0

Parece que ser un problema de fiar Sin embargo, el problema persiste a pesar de cambiar mis variables y la solución sugerida. –

+0

¿Se puede publicar la información del encabezado de Firebug, para que podamos ver si los datos que está pasando se pasan correctamente? – marteljn

2

En Codeigniter, si tiene csrf_protection activada en la configuración, ¡devolverá el error 500!

Para resolver esto, debe enviar el valor csrf.

Ejemplo:

$.ajax({ 
      type: "POST", 
      url: "http://example.com", 
      data: { 
       '<?php echo $this->security->get_csrf_token_name(); ?>' : 
       '<?php echo $this->security->get_csrf_hash(); ?>' 
       } 
     }); 
Cuestiones relacionadas