2009-06-22 23 views
6

Sto utilizzando jQuery per effettuare richieste ajax. I dati stanno arrivando in PHP bene, ma la risposta non è tornata correttamente su javascript. In qualche modo c'è uno spazio prima della risposta. Lo so perché Firebug dice così e il mio codice non funziona perché lo spazio è lì. Quando mi aspetto che ci sia uno spazio, funziona bene. Qualche idea su cosa potrebbe aggiungere lo spazio?Spazio prima della risposta Ajax (jQuery, PHP)

Qui è la mia funzione ajax:

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

risposta

18

Cercare spazi bianchi spurie al di fuori dei <?php ?> tag nel file PHP. Qualsiasi di questi spazi bianchi verrà emesso quando viene eseguito lo script PHP. Se il tuo file PHP include altri file PHP, la stessa cosa vale anche per quei file.

+2

+1 questo può essere uno dei bug più insidiosi. Ho riscontrato questo quando si lavora su un codice PHP insieme a un fornitore di terze parti. In un'unica iterazione, senza test, hanno deciso di aggiungere un blocco di commenti nella parte superiore di ogni file all'interno del proprio blocco PHP, seguito da una riga vuota prima del blocco di codice PHP effettivo. Bene, quella riga vuota era considerata contenuto inviato al browser, quindi qualsiasi/tutto il codice che successivamente aveva bisogno di impostare le intestazioni http (ad esempio) falliva miseramente. –

+0

Ciao ... Lo stesso sta succedendo al mio codice ora .. ho provato a rimuovere qualsiasi spazio inutile senza compromettere la leggibilità del codice ... ancora ottengo gli spazi ... Comunque ... ho usato spazi nei miei precedenti codici abbastanza generosamente ma solo ora vedo questo problema .... – SpikETidE

5

D'accordo, cercare un carattere spuri fuori dallo <?php ?>. Un suggerimento e uno che è completamente legittimo è semplicemente rimuovere il trailing ?>, in quanto non sono necessari. In fact, it's a coding standard for Drupal.

+0

Un indizio che ho trovato durante l'analisi di un problema come questo stava facendo una vista nel browser e vedendo una riga vuota prima della dichiarazione DOCTYPE (prima riga in la pagina web). –

+0

Questo. Ho appena rimosso il?> Dalla fine del mio file php del modello CodeIgniter e ha risolto il problema, non più output di spazi bianchi! – skiindude22

4

In alcuni casi, ho scoperto che l'esecuzione della risposta tramite $ .trim() prima di eseguire qualsiasi operazione può funzionare abbastanza bene.

Ovviamente, le soluzioni di cui sopra sono ancora molto applicabili, ma se ti trovi in ​​una situazione in cui non puoi cambiarlo, ho pensato che valesse la pena buttar lì.

+0

Questo è buono. Idea molto produttiva, se il debug del codice iniziale richiederà molto tempo. – Haluk

Problemi correlati