/ / jquery cross domény ajax žiadosti - IE8 a IE9 - YouTube API v3 - len jsonp? - jquery, ajax, internet-explorer-8, youtube-api, cross-domain

jquery cross domain ajax žiadosti - IE8 a IE9 - YouTube API v3 - len jsonp? - jquery, ajax, internet-explorer-8, youtube-api, cross-domain

Jednoducho som re-zohľadnil veľa kódu, ku ktorému sa môžem pripojiťverzia API služby YouTube, aby zistili, že žiaden z mojich ajax volaní nefungoval na IE8 a IE9. To súvisí s tým, ako tieto verzie IE robia krížové domény ajax žiadosti (používajú MS XDomainRequest, ktorý nie je podporovaný v jquery).

Môj starý kód robil požiadavky jsonp a pracoval na IE8 a IE9. Môj nový kód robil bežné žiadosti, napríklad: $.ajax({dataType:"json", ...}) miesto. Neuvedomil som si, že to nebude fungovať v IE8 a IE9.

Jedna nevýhoda pri vybavovaní žiadostí jsonp je, že vynemôže zachytiť časové limity prostredníctvom spätného vyvolania chýb žiadosti ajax, pretože server nikdy nereaguje, čo znamená, že váš spätný hovor nebude nikdy volaný. Spôsob, akým som to zvládol, je (existuje lepší spôsob?):

var timer = setTimeout(function () {
// a timeout occurred after 30 seconds
}, 30000);

$.ajax({
url: url + "https://www.googleapis.com/youtube/v3/... &callback=?",
type: "get",
dataType: "jsonp",
success: function (json) {
clearTimeout(timer);
// success!
},
error: function (xhr) {
clearTimeout(timer);
o.fnError(getAjaxError(xhr));
}
});

Moja otázka je: je to najlepší spôsob, ako uskutočniť hovory do rozhrania YouTube API v3 pomocou jquery a ajax?

odpovede:

1 pre odpoveď č. 1

Aplikácia Data API v3 v službe YouTube vyžaduje, aby ste vytvorili GETžiadosti pomocou protokolu HTTPS. V žiadnom prípade nebude fungovať pomocou požiadaviek HTTP. Ak stránka, z ktorej odošlete požiadavku GET, používate protokol HTTP, implementácia XDomainRequest nebude fungovať. Aplikácia XDomainRequest vyžaduje, aby sa protokoly zhodovali, takže je to zbytočné cvičenie, ktoré sa pokúša implementovať, pokiaľ vaše stránky nebudú poskytované z HTTPS.


0 pre odpoveď č. 2

Nevidím, prečo nemôžete použiť XDomainRequesttento prípad. Buď zabudnite na jQuery pri vytváraní krízových požiadaviek ajax v IE9 a IE8 (a priamo použite XDomainRequest), alebo použite wrapper XDomainRequest pre jQuery, ako napríklad https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest, Tu nie je potrebné používať JSONP.

Upozorňujeme, že ak XDomainRequest zlyhá, nebudú poskytnuté žiadne dôvody. Funkcia spätného volania sa neberie / neprechádza žiadnymi parametrami.