2 votes

Demande Json avec YQL et MooTools

Je travaille avec des fichiers json sur un autre domaine et j'essaie de faire une requête crooss-domaine en utilisant YQL comme proxy. Je suis un débutant avec javascript et les technologies web et chaque ligne de code que j'écris pourrait être beaucoup mieux, mais pour l'instant ce n'est pas un problème si le code que j'écris avec votre aide n'est pas si élégant.

Pour l'instant, mon code est le suivant :

function GetUrl() {
    var link = "http://m.airpim.com/json/public/search?q=variabile&k=&e=1",
        name = document.id('s').get('value') || '*';

    return link.replace("variabile", name);
}

function Ricerca() {
    var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from json where url="' + GetUrl() + '"') + '&format=json&diagnostics=false&callback=';
    return yql;
}

function LavoroJson() {
    var ciao = new Request.JSONP({
        url: Ricerca(),
        onComplete: function(data) {
            // Log the result to console for inspection
            alert(ciao.toSource());
        }
    }).send();
}

Dans mon idée, je devrais faire la requête du json en utilisant YQL, mais cela ne fonctionne pas. Comment puis-je le faire ?

2voto

Dimitar Christoff Points 18439

Vous pouvez étendre quelque peu la classe Request.JSONP.

Request.YQLJSON = new Class({
    // gets basic info such as country and latitude data
    Extends: Request.JSONP,

    options: {
        log: !true,
        url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D%22{location}%22&format=json"
    },

    initialize: function(location, options) {
        this.parent(options);
        if (!location)
            return;

        this.options.url = this.options.url.substitute({location: encodeURIComponent(location)});
    },

    success: function(data, script) {
        this.parent(data, script);
    }
});

et vous pouvez faire votre propre implémentation comme DSL pour les détails d'airpim :

Request.airpim = new Class({

    Extends: Request.YQLJSON,

    options: {
        suburl: "http://m.airpim.com/json/public/search?q={search}&k=&e=1"
    },

    initialize: function(query, options) {
        this.parent(this.options.suburl.substitute({
            search: encodeURIComponent(query)
        }), options);
    }

});

utiliser comme ça :

new Request.airpim("*", {
    onSuccess: function(data) {
        console.log(data.query.results.json);
    }
}).send();

https://tinker.io/c9634

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X