Bonjour a tous,

J'ai un petit script que j'ai trouvé et que j'utilise pour un site. je souhaite faire appel à un json pour appeler les données. j'ai beau chercher je ne voit pas la démarche.

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
var getSource = function () {
    
    var users = new Backbone.Collection(<? echo $data ?>).models;

    return _.map(users, function (user) {
        return {
            id: user.get('id'),
            article: user.get('first_name') + ' ' + user.get('last_name'),
            // these functions allows Bootstrap typehead to use this item in places where it was expecting a string
            toString: function () {
                return JSON.stringify(this);
            },
            toLowerCase: function () {
                return this.article.toLowerCase();
            },
            indexOf: function (string) {
                return String.prototype.indexOf.apply(this.article, arguments);
            },
            replace: function (string) {
                return String.prototype.replace.apply(this.article, arguments);
            }
        };
    });
};
    
$('.article').typeahead({
            minLength: 1,
            source: getSource(),
            display: 'article',
            updater: function (itemString) {
                var item = JSON.parse(itemString);
                $('.id').val(item.id);
                return item.article;
            }
});

$('.search_city').typeahead({
            minLength: 1,
            source: getSource(),
            display: 'search_city',
            updater: function (itemString) {
                var item = JSON.parse(itemString);
                $('.id_city').val(item.id);
                return item.article;
            }
});

});//]]>  

</script>


Je souhaite remplacer les données <? echo $data ?> par un appel json (par exemple: url: 'json/client.json') parce sinon il me charge plus de 2Mo dans ma page. Ce la me sert pour un typeahead Boostrap et les données sont généré a partir de ma base de données.

Merci à vous.
Bonjour,

tu utilises une librairie javascript particulière ? Edition : j'ai fait une recherche sur typeahead que je ne connassais pas. tu utilises normalement JQuery. Les appels se font correctement ?

Je ne connais que JQuery mais tu devrais trouver l'équivalent.

Je pense qu'il te manque quelques paramètres :
- url : lien vers ton script JSON
- datatype : JSON

Et sinon peux tu nous dire si tu as une erreur dans ton console et sinon au niveau du suivi est ce que ton appel en JSON te retourne quelque chose ? Si oui peux tu nous afficher son retour.
Modifié par mini-truc (23 Aug 2013 - 14:31)
En fait, cette expression:

var users = new Backbone.Collection(<? echo $data ?>).models;

est égale à ça:

var users = new Backbone.Collection([{first_name: 'primo', last_name: 'ultimo', id: 1},{ first_name: 'altro_primo', last_name: 'altro_ultimo', id: 2}]).models;


Donc <? echo $data ?> à un structure json.

Comme mes données appelées sont dans ma base de données, je souhaitait appelé ce json à partir d'une url.

Je vais essayer ça:

var users = new Backbone.Collection(url: '/json/profiles.json').models;
Aaaah j'avais pas vu tu joues avec les collections :o désolé je pourrais pas t'aider la dessus.

Je ne sais pas si c'est pareil avec les collections mais de mon côté je sais que quand j'appelle un script qui me retourne du JSON j'utilise la fonction ajax...