Av säkerhetsskäl kan vi inte göra AJAX-förfrågningar på flera domäner med jQuery. Till exempel kan jag inte ringa metoden load () och skickas i "cnn.com". Som vi skulle ladda i skript och sådant, liksom vårt önskade innehåll, skulle detta innebära en betydande säkerhetsrisk. Ändå kan det finnas tillfällen då det här är specifikt vad du behöver. Tack vare YQL kan vi lätt tillåta denna funktion!
// Accepterar en url och en återuppringningsfunktion att köra. funktionsförfråganCrossDomain (site, callback) // Om ingen webbadress skickades, avsluta. om (! site) alert ('Ingen webbplats skickades.'); returnera false; // Ta den medföljande webbadressen och lägg till den i en YQL-fråga. Se till att du kodar det! var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent ('välj * från html där url = "' + site + '") +' & format = xml & callback = cbFunc '; // Be om den YSQL-strängen och kör en återuppringningsfunktion. // Passa en definierad funktion för att förhindra cache-busting. $ .getJSON (yql, cbFunc); funktion cbFunc (data) // Om vi har något att arbeta med ... om (data.results [0]) // Ta bort alla skript taggar av säkerhetsskäl. // VAR VÄLDIGT FÖRSIKTIG. Detta hjälper, men vi borde göra mer. data = data.results [0] .replace (/ , eller . Av denna anledning lägger vi till en teckenklass ([^>] *), vilket betyder "Hitta noll eller mer av allt som inte är en slutkonsol. Det här tar hand om attribut och värden.[\ S \ S] *?Därefter vill vi ta bort all kod, liksom eventuella avstånd. \ s refererar till ett mellanslag. \ S hänvisar till allt som inte är ett utrymme. Än en gång lägger vi till en * efter karaktärklassen för att ange att vi vill ha noll eller fler förekomster.
<\/script>Slutligen hitta de avslutande skriptetiketterna.
Vidare läsning
Detta är endast meningen att ge en glimt av hur vi kan uppnå denna funktionalitet. Bara så mycket kan täckas i en fem minuters video. Gärna diskutera i kommentarerna, och du uppmanas alltid att gaffla källkoden för att förbättra den!