WikiQuote exposes an API. Vous pouvez utiliser JSONP pour faire une demande à l'API et d'obtenir les données toutes préanalysée et prêt à partir:
document.body.appendChild(document.createElement("script")).src =
"http://en.wikiquote.org/w/api.php?action=query&titles=Last_words" +
"&prop=revisions&rvlimit=1&rvprop=content&format=json&callback=handleQuote";
function handleQuote(quote)
{
// quote is the response from wikiquote
}
Notez que la réponse est renvoyée comme balises wiki, pas html.
Vous devrez faire un peu d'analyse pour obtenir html, si c'est ce que vous recherchez.
Modifier: Utilisez action=parse&page=Last_words
pour obtenir html.
Vous pouvez prévisualiser la réponse JSON dans votre navigateur en changeant l'argument format
de json
à jsonfm
et le coller dans votre navigateur:
balisage Wiki:
http://en.wikiquote.org/w/api.php?action=query&titles=Last_words&prop=revisions&rvlimit=1&rvprop=content&format=jsonfm&callback=handleQuote
HTML:
http://en.wikiquote.org/w/api.php?action=parse&page=Last_words&format=jsonfm&callback=handleQuote
Modifier: J'ai vraiment répondu seulement la moitié (ou moins) de votre question. Quant à la façon d'interagir avec les données une fois que vous l'avez, jQuery le rend simple. Si vous passez une chaîne html dans $()
, jQuery construit les éléments pour vous. Ensuite, vous pouvez y accéder via des méthodes jQuery ou DOM:
var paragraphs = $(someHTML).find("p");
Une façon simple d'obtenir le code HTML de tout domaine via JavaScript, est de faire votre demande ajax à une page de serveur local qui demande le document pour vous. Vous pouvez écrire un gestionnaire générique page ashx, avec quelque chose comme:
public void ProcessRequest(HttpContext context)
{
string url = Request.QueryString["url"];
if (Uri.IsWellFormedUriString(url, UriKind.Absolute))
{
context.Response.Write(new WebClient().DownloadString(url));
}
}
Et puis appelez avec jQuery:
var url = encodeURIComponent("http://en.wikiquote.org/wiki/Last_words");
$.get("fetch.ashx?url=" + url, function (response)
{
var $response = $(response);
});
Edit: Les nouveaux navigateurs ne prennent en charge une récupération de données inter-domaines par JavaScript en implémentant Cross-Origin Resource Sharing (CORS). FireFox et Chrome prennent en charge CORS via XMLHttpRequest
. IE8 et IE9 prennent en charge CORS avec XDomainRequest
. Le hic, c'est que le serveur doit également supporter CORS. En résumé, le serveur doit inclure un en-tête de réponse de Access-Control-Allow-Origin: *
pour que le client puisse traiter la réponse. Et malheureusement, il semble que wikiquote n'envoie pas cet en-tête dans sa réponse. Voici un hefty article on the internals of CORS.
Ceci est intéressant et je veux hacker une bibliothèque pour contourner ce problème ... –
+1 pour "Toutes vos opérations bancaires nous appartiennent"! : D – jwueller