2009-06-22 36 views
6

Estoy usando jQuery para hacer solicitudes ajax. Los datos están llegando a PHP muy bien, pero la respuesta no es volver a javascript correctamente. De alguna manera hay un espacio antes de la respuesta. Lo sé porque Firebug lo dice y mi código no funciona porque el espacio está ahí. Cuando espero que haya espacio, funciona bien. ¿Alguna idea sobre qué podría estar agregando el espacio?Espacio antes de Respuesta Ajax (jQuery, PHP)

Aquí es mi función ajax:

function my_ajax (aurl, adata, aretfunc) { 
$.ajax({ 
    type: "POST", 
    url: aurl, 
    data: adata, 
    success: function(msg) { 
    eval(aretfunc+'(msg);'); 
    } 
}); 
} 

Respuesta

18

Busque espacios en blanco espurias fuera de las etiquetas <?php ?> en su archivo PHP. Cualquiera de estos espacios en blanco obtendrá resultados cuando se ejecute el script PHP. Si su archivo PHP incluye otros archivos PHP, lo mismo se aplica a esos archivos.

+2

+1 este puede ser uno de los errores más insidiosos. Me encontré con esto cuando trabajaba en algunos códigos PHP junto con un proveedor de terceros. En una iteración, sin pruebas, decidieron agregar un bloque de comentarios en la parte superior de cada archivo dentro de su propio bloque PHP, seguido de una línea vacía antes del bloque de código PHP real. Bueno, esa línea en blanco se consideraba contenido enviado al navegador, por lo que cualquier/todos los códigos que posteriormente necesitaban establecer encabezados http (por ejemplo) fallaban miserablemente. –

+0

Hola ... Lo mismo está pasando con mi código ahora ... He intentado eliminar cualquier espacio innecesario sin afectar la legibilidad del código ... aún así obtengo los espacios ... De todos modos ... he usado espacios en mis códigos anteriores bastante liberalmente, pero solo ahora veo este problema ... – SpikETidE

5

De acuerdo, busque el carácter de espacios en blanco espurios fuera del <?php ?>. Una sugerencia, y una que es completamente legítima es simplemente eliminar el ?> posterior, ya que son innecesarios. In fact, it's a coding standard for Drupal.

+0

Una pista que encontré al investigar un problema como este fue hacer una fuente de vista en el navegador y ver una línea en blanco antes de la declaración DOCTYPE (primera línea en la página web). –

+0

Esto. Acabo de eliminar el?> Del final de mi archivo CodeIgniter modelo php y solucionó el problema, ¡no más salida de espacio en blanco! – skiindude22

4

En algunos casos, he encontrado que simplemente ejecutar la respuesta a través de $ .trim() antes de hacer cualquier cosa puede funcionar bastante bien.

Por supuesto, las soluciones anteriores siguen siendo muy aplicables, pero si estás en una situación en la que no puedes cambiar eso, pensé que valía la pena tirar por ahí.

+0

Esto es bueno. Idea muy productiva, si la depuración el código inicial tomará mucho tiempo. – Haluk

Cuestiones relacionadas