2017-08-06 1 views
0

Je cours dans un cas "étrange" (peut-être pas) où je dois passer les paramètres à travers l'URL au lieu de les envoyer comme q. Jetez un oeil à l'exemple suivant de docs:Puis-je définir les paramètres de chaîne de requête dans Select2 lors de l'utilisation de la source de données AJAX?

$(".js-data-example-ajax").select2({ 
    ajax: { 
    url: "https://api.github.com/search/repositories", 
    dataType: 'json', 
    delay: 250, 
    data: function (params) { 
     return { 
     q: params.term, // search term 
     page: params.page 
     }; 
    }, 
    processResults: function (data, params) { 
     params.page = params.page || 1; 

     return { 
     results: data.items, 
     pagination: { 
      more: (params.page * 30) < data.total_count 
     } 
     }; 
    }, 
    cache: true 
    }, 
    ... 
}); 

Dans l'exemple ci-dessus params.term est envoyé au serveur et vous pouvez utiliser un mécanisme pour obtenir et faire ce que vous voulez faire.

Dans mon cas, j'envoie le terme de recherche à un point de terminaison API. L'API attend quelque chose comme l'exemple suivant:

http://someurl?slug=56&title=56&description=56&content=56 

En d'autres termes:

'http://someurl?slug='+params.term+'&title='+params.term+'&description='+params.term+'&content='+params.term 

Comme vous beaucoup params.term avis devient la valeur à envoyer à l'adresse URL de l'API.

Mais je ne sais pas comment y parvenir avec Select2. J'ai cherché quelques informations, mais sans succès, ce que j'ai regardé jusqu'à présent:

Mais rien dire quoi que ce soit à propos de ce dont j'ai besoin. Est-ce que quelqu'un a une idée sur la façon d'y parvenir?

+0

La chaîne de requête que vous recherchez ne semble pas correspondre aux documents api https://developer.github.com/v3/search/. Le 'q' dans vos données semble correct – charlietfl

+0

@charlietfl c'est juste un exemple, ne signifie pas que c'est la bonne URL que je viens de copier et coller de l'exemple pour garder le poste sur la même page, si c'est confus, je peux le changer Quelque chose d'autre – ReynierPM

+0

Assurez-vous qu'il est déroutant lorsque vous utilisez des paramètres de requête qui sont constitués ou affichez une API comme Github qui est bien documentée – charlietfl

Répondre

1

Modifier l'objet de données pour refléter les propriétés que vous voulez avoir dans la chaîne de requête:

data: function (params) { 
    return { 
    slug: params.term, 
    description: params.term, 
    content: params.term 
    }; 
}, 

Revérifiez dans le réseau des outils de développement que cela est bien fait comme GET essayer autrement ajouter type:'GET' aux options ajax

+0

Très bien, vous êtes le meilleur que cela fonctionne et je n'ai pas besoin d'ajouter le 'type: 'GET'' toe la demande. Merci – ReynierPM