0

所以,我在发帖前试着环顾四周,但似乎找不到答案。我的困境:

我有一个 XML 文件,其中包含指向各个页面的 url 链接(所有类似的不同产品)。

通过使用 jQuery 和 AJAX,我可以从 XML 文件中提取链接。

然后,我希望能够按顺序将这些链接传递给另一个 AJAX 调用,该调用将使用代理服务器连接到另一个站点并抓取它以获取数据。在这种情况下,它是一个特定的类。然后,我需要能够收集该类中的数据并将其按顺序应用到我的站点中的跨度。

将等待抓取数据的 HTML 标记

<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 执行所有这些:

//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);           

        });
    }
});

所以本质上,如果其他页面标记看起来像这样:

站点 1

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

站点 2

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

站点 3

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

我的标记应如下所示:

<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>

所以我想我的问题是,如何指定它们按顺序加载到我的标记中?我是否循环遍历 xml 中的链接,然后将它们放入 ajax --> 代理,然后循环遍历结果以吐出每个跨度?

任何帮助将不胜感激!谢谢!

4

1 回答 1

1

如果我是你,我不会将 ajax 请求放入循环中。如果您想对代理执行多个请求,您应该将该逻辑放在您的服务器上,并将一组links 传递给该服务器脚本,只需来自浏览器的一个 http 请求。取回数据后,您甚至可以使用 ASP 返回一个对象数组,其中包含每个项目的 id 和价格。然后,在 javascript 中,您可以遍历该数据并使用 Javascript 的 append() 或 html() (或您想要使用的任何 DOM 操作)将其包装在您喜欢的任何 html 中。如果我遗漏了您问题的重要部分,请告诉我。

于 2010-09-23T23:03:27.640 回答