如何从其他页面获取内容

时间:2013-04-19 14:23:08

标签: javascript ajax jquery get

我已经为这个问题奋斗了2天了。我已经找到了很多关于类似主题的教程,但没有一个帮助我解决我的问题。

在Volusion购物车上,我试图远程抓取产品页面中的内容,并将其信息保存在变量中,以便在购物车上使用。我无法使用PHP(不支持Volusion),并且我被迫使用javascript(据我所知)这样做。以下代码在购物车项目中搜索特定品牌名称“Palliser”。如果该名称存在,它将抓取链接,使用ajax向与链接关联的页面发送请求,并获取我需要的信息。它获取了我需要的信息,但是在这个过程中我的页面变成白色并且它留下了2013年的年份...我不知道为什么会发生这种情况。这是我第一次使用ajax,所以有人可以帮忙!?!?

$(window).load(function(){
    var seat_count = 0;
    var i = 0;
    var prodLinks = [];
    var numSeats = '';

    $('b.cart-item-name:contains("Palliser")').filter(function(index) {
        prodLinks[i] = 'http://xepwk.cjvgn.servertrust.com/'+$(this).parent('a').attr('href');

        $.ajax({
            url:prodLinks[i],
            //data:string,
            async:false,
            success: function(result){
                var html = jQuery('<div>').html(result);
                var prodInfoArray = html.find('span.PageText_L660n').parent('b').parent('td').html().split('<br>');
                var numSeats = prodInfoArray[1];
                alert(numSeats);
            }
        });     

        i+=1;
});

以下是帮助我尽可能地获取信息的链接:Get the content of another page's div with jQuery Ajax

2 个答案:

答案 0 :(得分:0)

只是一个想法,有:

async:false

同步加载您的ajax请求,并且在您可以执行任何其他操作之前必须完成请求。尝试将其更改为true或将其删除(默认情况下为true)。

答案 1 :(得分:0)

您可以在DOM ready事件触发时启动ajax请求。因为您不需要图像和其他人员来开始ajax请求。此外async:true必须在您的情况下提供帮助。

var seat_count = 0;
var i = 0;
var prodLinks = [];
var numSeats = '';
$(document).ready(function() {
    $('b.cart-item-name:contains("Palliser")').filter(function(index) {
        prodLinks[i] = 'http://xepwk.cjvgn.servertrust.com/'+
            $(this).parent('a').attr('href');

        $.ajax({
            url:prodLinks[i++],
            //data:string,
            async:true,
            success: function(result){
                var html = jQuery('<div>').html(result);
                var prodInfoArray = html.find('span.PageText_L660n')
                    .parent('b').parent('td').html().split('<br>');
                var numSeats = prodInfoArray[1];
                alert(numSeats);
            }
        });     
    });
});