Próbuję załadować zawartość HTML na stronie internetowej poza moją domeną, którą mogę zrobić dobrze wykorzystując funkcjonalność dostarczoną przez tę jQuery wtyczkę: http://www.ajax-cross-origin.com/. Jednakże, gdy wydrukuję HTML, brakuje elementów, które zakładam, jest to, że żądanie AJAX dostaje HTML, zanim strona zostanie w pełni załadowana. Kiedy mówię "brakuje kawałków", mam na myśli to, że niektóre znaczniki, które powinny mieć innerhtml, nie mają żadnego. Oto mój kod:

$.ajax({
    crossOrigin: true,
    url: "http://siriusxm.com/bpm",
    success: function(data) {
        console.log(data);
    },
    timeout: 5000
});

Atrybut Crossorigin jest z wtyczki, o której wspomniałem. Dostaję takie same zachowanie z czasem limitu czasu (i dziwnie, nie wydaje się, aby limit czasu robi wszystko - kiedy sprawdzam konsolę, loguje się natychmiast data}).

Czy istnieje sposób na czekanie, aż strona zostanie w pełni załadowana przed uzyskaniem treści? Za to, co jest wart, jest to część rozszerzenia chromu, które rozwijam się, więc jeśli jest coś innego - mądry, możesz potrzebować tylko zapytać.

Dzięki!

0
jrad 12 sierpień 2014, 06:57

2 odpowiedzi

Najlepsza odpowiedź

Tak więc zgodnie z twoimi komentarzami, których szukasz, których szukasz, to teraz grający na artystę i piosenkę, której nie będziesz mógł uzyskać ładowanie tylko źródła strony głównej.

Aby znaleźć dane, których szukasz, otwieraj swoje Chrome DevTools, przejdź do karty Sieć i odśwież, aby zobaczyć wszystkie żądania na stronie.

Wygląda na to, że jest to żądanie, które chcesz, wystarczy zaktualizować znacznik czasu co minutę: http://www.siriusxm.com/metadata/pdt/en-us/json/channels/thebeat/timestamp/08-12-03:48:00

Po prostu analizuj, że JSON i złap to, czego potrzebujesz. Oczywiście zawsze mogą zmienić lokalizację lub format pliku, ale na razie tak jest.

1
cyk 12 sierpień 2014, 03:54

Jeśli dziennik konsoli pokazuje wszystkie dane, których szukasz, wówczas połączenie AJAX powinno być w porządku.

Każdy kod w rozmowie odcinającej sukces będzie pobiegł po wywołaniu AJAX, więc wystarczy użyć jQuery w funkcji oddzwonienia sukcesu, aby wstawić dane do HTML. Wszystko, co widzę, teraz jest konsola.log (dane), chyba że usunąłeś jakiś kod.

Limit czasu daje AJAX zadzwoń do ustawionego czasu, aby zakończyć przed nią "razy", innymi słowy, mówi, że przestanie się przestać czekać po ustawionym czasie.

0
Caff3in3fr33 12 sierpień 2014, 03:17