2010-09-23 26 views
0

Donc, j'ai essayé de regarder autour avant de poster, mais je n'arrive pas à trouver une réponse. Mon dilemme:Scanner xml pour les liens en utilisant ajax, appliquer des liens à un autre appel ajax pour gratter la page et retourner les données

J'ai un fichier XML qui héberge des liens URL vers différentes pages (tous les produits similaires, diff). En utilisant jQuery et AJAX, je suis capable d'extraire les liens du fichier .XML. Je veux ensuite être en mesure de transmettre ces liens, dans l'ordre, à un autre appel AJAX qui utilisera un serveur proxy pour se connecter à un autre site et le gratter pour les données. Dans ce cas, c'est une classe spécifique. Je dois ensuite être en mesure de collecter les données au sein de cette classe et l'appliquer à une durée sur mon site, dans l'ordre.

balisage HTML qui attendra les données raclées

<div class="panel"> 
    <span class="price"></span> 
</div> 
<div class="panel"> 
    <span class="price"></span> 
</div> 
<div class="panel"> 
    <span class="price"></span> 
</div> 

JS exécution Tout ceci:

//Pull Content Necessary Links From XML File 
$.ajax({ 
    type: "GET", 
    url: "/Test/addTocart/realExample/Media/xml/items.xml", 
    dataType: "xml", 
    success: function(xml) { 
     $(xml).find('target').each(function() { 

      //Scan Through XML to Find Each Link 
      link = $(this).find('link').text(); 

      function fetchPage(url) { 
       $.ajax({ 
        type: "GET", 
        url: "http://test/crossdomainproxy.aspx?u=" + link, 
        error: function(request, status) { 
         alert('Error fetching ' + url); 
        }, 
        success: function(data) { 
         parse(data); 
        } 
       }); 
      } 

      function parse(data) { 
       alert($(data).find(".threeThin .price-side").text()); 
      } 

      fetchPage(1);   

     }); 
    } 
}); 

Donc, essentiellement, si les autres pages de balisage ressemble à ceci:

Site 1

<span class="price-side">$23.33</span> 

Site 2

<span class="price-side">$22.33</span> 

Site 3

<span class="price-side">$245.33</span> 

Mon balisage devrait ressembler à ceci:

<div class="panel"> 
    <span class="price">$23.33</span> 
</div> 
<div class="panel"> 
    <span class="price">$22.33</span> 
</div> 
<div class="panel"> 
    <span class="price">$245.33</span> 
</div> 

donc je suppose que ma question serait, comment puis-je les spécifier à charger mon balisage dans l'ordre? Est-ce que je fais une boucle sur les liens dans xml, puis les jette dans ajax -> proxy, puis je fais une boucle sur les résultats pour cracher à chaque portée?

Toute aide serait grandement appréciée! Merci!

Répondre

1

Si j'étais vous, je ne mettrais pas une requête ajax dans une boucle. Si vous souhaitez effectuer plusieurs demandes à un proxy, vous devez mettre cette logique sur votre serveur et passer un tableau de link s à ce script serveur avec juste une requête http du navigateur. Une fois que vous avez récupéré les données, vous pouvez même utiliser ASP pour retourner un tableau d'objets avec l'identifiant et le prix pour chaque article. Ensuite, en javascript, vous pouvez faire défiler ces données et les placer dans n'importe quel format html en utilisant append() ou html() de Javascript (ou n'importe quelle manipulation DOM que vous voulez utiliser). S'il vous plaît laissez-moi savoir si je manque un élément important de votre question.