select2 avec ajax méthode post
Je suis en train d'utiliser select2 avec ajax chargement.
Voici mon code:
clonedTemplate.find('[id^=detailsPhaseFinanceMinor_]').select2({
placeholder: "Select",
minimumInputLength: 1,
ajax: { //instead of writing the function to execute the request we use Select2's convenient helper
type: 'POST',
contentType: "application/json; charset=utf-8",
url: "mapBasic.aspx/GetFinSys",
dataType: 'json',
data: function (term, page) {
return "{'term':\"" + term + "\"}";
},
results: function (data, page) { //parse the results into the format expected by Select2.
//since we are using custom formatting functions we do not need to alter remote JSON data
return { results: data.Value };
}
}
});
De l'appel ajax est un webmethod/pagemethod dans le code-behind de la page:
[WebMethod]
public static List<LookupCodeItem> GetFinSys(string term)
{
string stringToCompareTo = term.ToLower();
List<LookupCodeItem> result = new List<LookupCodeItem>();
//FIN SYS
using (mapEntities db = new mapEntities())
{
List<MPO_FINSYS_AMT> finSysCodes = (from x in db.MPO_FINSYS_AMT
select x).ToList();
foreach (MPO_FINSYS_AMT item in finSysCodes)
{
string valKey = string.Format("{0}.{1}.{2}", item.FY, item.MDOT_MPO_CD, item.FIN_SYS);
LookupCodeItem x = new LookupCodeItem();
x.Value = valKey;
x.ShortDescription = string.Format("{0}.{1}.{2}", item.FY, item.MDOT_MPO_CD, item.FIN_SYS); ;
x.LongDescription = string.Empty;
result.Add(x);
}
}
return result;
}
Lors de la saisie de données dans la zone de texte, la requête POST est fait, et le json est envoie semble être correctement formaté.
Cependant, la réponse de la pagemethod est l'ensemble de la page html. C'est ma compréhension que cela peut se produire avec des méthodes post si vous n'avez pas votre "contentType" correctement défini dans l'appel ajax. J'ai mis en elle la même que pour tous mes autres appels ajax qui fonctionnent sur la page (ils ne sont pas à l'aide de select2).
Ne select2 ignorer le "contentType" attribut? Ou est-il autre chose que j'ai fait mal?
** EDIT **
Après cette annonce, j'ai trouvé cette question figurant à select2 de la page github:
Question 492 - Ajout du Support pour contentType à Ajax
Il semble qu'il ne passe pas contentType à travers. Suis-je en mesure de contourner selet2 est construit en ajax helper et utiliser mes propres définies manuellement?
OriginalL'auteur Amanda Kitson | 2013-01-18
Vous devez vous connecter pour publier un commentaire.
J'étais ont le même problème et en dessous de solution qui fonctionne pour moi:
OriginalL'auteur TechnicalKeera
N'oubliez pas d'ajouter le jeton CSRF à votre requête post. Il se peut que vous faites tout droit sur le côté client, mais le serveur refuse la demande, en raison de l'absence du jeton. Voir, par exemple, pour le PHP Laravel Cadre: https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token pour plus d'info.
OriginalL'auteur Daniel Schreij
Je conseille WebApi ou ServiceStack pour vos appels de données au lieu de [webmethod].
A été tout simplement essayer d'obtenir l'affiche facile a suggéré/prise en charge à corriger. En le voyant comme cela a été fait il y a 7 mois, pas beaucoup que je peux faire à ce sujet maintenant! 🙂
OriginalL'auteur Wayne Brantley