2010-08-16 7 views
1

Je suis en train de gratter des sites, et je fais ceci un à la fois, puis j'essaie d'obtenir les résultats pour qu'ils s'affichent comme je les obtiens. J'essaie de rendre un TR à la fois, mais au lieu de cela, il fait tout le monde, puis rend TOUS les TRs.Rendu Jquery/Ajax et PHP TR

Voici l'appel à javascript:

<body onload="getOffers(companies , {$scraped}, {$isbn13});"> 

est ici la fonction JS/Jquery:

function getOffers($company_ids, $scraped, $isbn) 
{ 
    if($scraped) 
    { 
     $.ajaxSetup({cache: false}); 
     for(var $id in $company_ids) 
     { 
      $.ajax({ 
        url: "../get_offer.php", 
        data: "id=" + $company_ids[$id] + "&isbn=" + $isbn + "&code=" + $id, 
        dataType: "html", 
        success: function(data) { 
           $("#results tbody:last").append(data); 
           } 
      }); 
     } 
    } 
    else 
    { 
     return true; 
    } 
} 

Et voici la page PHP:

<?php 
require_once 'scrape.php'; 
require_once 'include.php'; 
$id = requestValue('id'); 
$isbn = requestValue('isbn'); 
$code = requestValue('code'); 
$page = curlMultiRequest(isbn10($isbn), $id); 
$offer = getOffer($code, $page[$code], isbn10($isbn)); 
print "<tr><td>". $offer['company']."</td><td>". $offer['offer_new'] . "</td><td>" . $offer['offer_used']."</td></tr>"; 
?> 

J'ai essayé de revenir la piqûre que j'imprime, mais ça n'a même pas marché. Comment est-ce que je peux faire imprimer chaque ligne de table à l'écran pendant que les données sont récupérées?

EDIT: donc j'ai essayé d'ajouter ceci:

print "<tr><td>". $offer['company']."</td><td>". $offer['offer_new'] . "</td><td>" . $offer['offer_used']."</td></tr>"; 
ob_flush(); 
flush(); 

Pour PHP et il ne fonctionne pas. Je ne comprends pas, si je lance une alerte, cela arrive à la volée pour chaque identifiant, mais pas le rendu html.

+0

Avez-vous une URL où vous pouvez consulter votre code en action? ? – Gabriel

+0

http://comp.textbooktech.com/ il suffit de taper un ISBN de n'importe quel livre et il devrait commencer à fonctionner. J'ai enlevé le flush(); – KacieHouser

+0

J'ai essayé ce lien http://comp.textbooktech.com/results.php?id=0470838183 et dans Chrome cela a fonctionné et les lignes sont apparues une par une. Dans Firefox, je reçois une erreur. Le deuxième paramètre est manquant dans votre appel de fonction onload getOffers. – Gabriel

Répondre

0

Il s'est peut-être arrangé comme par magie car votre navigateur mettait en cache une partie du javascript. Vous devez utiliser certains outils de développement pour vider manuellement le cache des ressources de l'hôte sur lequel vous testez afin d'éviter que l'ancien code ne soit subtilement utilisé.