2010-07-05 8 views
1

J'utilise AJAX pour charger du contenu dans un espace réservé, le code PHP utilise file_get_contents pour obtenir la page que je veux, puis la renvoie à la réponse AJAX qui la place dans mon espace réservé. Le problème que j'ai est que le contenu qui est saisi est réellement modifié, comme les balises HTML sont mis où ils n'existaient pas .. Voici le code:AJAX change le contenu de file_get_contents

function getPreview() { 
    var indexe = ajax.length; 
    ajax[indexe] = new sack(); 
    var form = document.getElementById('form'); 
    ajax[indexe].setVar("prevsub", form.ebay_preview_submit.value); 
    ajax[indexe].method = 'POST'; 
    ajax[indexe].requestFile = "../admin/model/catalog/getEbay.php"; 
    ajax[indexe].onCompletion = function(){ createPreview(indexe) }; 
    ajax[indexe].runAJAX(); 
} 

function createPreview(indexe) {  
    var obj = document.getElementById('preview_ph'); 
    obj.innerHTML = ajax[indexe].response; 
} 

si tout est mis à l'intérieur de cet espace réservé:
<div id="preview_ph" ></div>

Voici le PHP qui fait l'accaparement:

if(isset($_POST['prevsub'])){ 
$template_viewer = http://localhost:8888/admin/view/template/ebay/template_viewer.php'; 
$file_got = file_get_contents($template_viewer); 
echo $file_got; 
} 

Et voici un extrait de ce qu'il est censé être contre ce qu'il ajoute dans e avant ...

Censé être:

Sign up for Newsletter</a> </div></td> 

Mais au lieu, il est modifié:

Sign up for Newsletter</a></td></tr> 

Un autre, censé être:

bidding! </span> 
</div> 
</td></tr> 

Mais obtient modifié pour:

bidding! </span> 
</div> 
</td></tbody> 

Il modifie le contenu 7 fois au total à partir de la page son saisissant ... Une explication pour cela?

La page, ouvre dans un navigateur parfaitement, il est sérieusement altéré par se AJAX ou file_get_contents en quelque sorte, et je suis complètement déconcerté ...

Merci pour votre aide!

+0

Ne faites pas confiance à ce que dit le navigateur. Obtenez un renifleur de paquets si vous le devez. –

+0

OK, pouvez-vous me pointer dans la bonne direction? Merci! –

Répondre

1

Pour moi, cela ressemble au navigateur est l'assainissement du code HTML au moment de l'opération .innerHTML. C'est un acte d'autodéfense, parce que le HTML que vous produisez n'est clairement pas valide, n'est-ce pas?

Le résultat final ressemblerait

<div id="preview_ph" > 
Sign up for Newsletter 
    </a>   <--- broken 
    </div>  <--- broken 
    </td>  <--- broken 
</div> 

ce code briserait les DOM, de sorte que le navigateur doit essayer de corriger le mieux possible. Pourquoi produisez-vous ces étiquettes de fermeture via AJAX?

+0

En fait, je fournissais juste un extrait sur mon post, donc ce que vous avez indiqué a réellement toutes les balises correspondantes, etc. La sortie complète est xhtml entièrement valide, donc cela n'a pas de sens que le navigateur essaie de le réparer , il n'y a rien à corriger ... –

+0

@Josh pouvez-vous afficher un extrait complet qui est transmis? –

+0

Voici un lien vers le: [Bon un] (http://www.noextratime.com/wp-content/uploads/2010/07/newhtml2.html) Et le: [Bad one] (http : //www.noextratime.com/wp-content/uploads/2010/07/newhtml3.html) Merci! –