Próbuję użyć select2 z ładowaniem ajax.select2 z metodą posta ajaxowego
Oto mój kod:
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 };
}
}
});
Wywołanie ajax jest do WebMethod/pagemethod w kodzie opóźnieniem tej samej stronie:
[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;
}
Podczas wprowadzania danych do pola tekstowego, Żądanie POST jest wykonane, a json jest wysyłany, wydaje się być poprawnie sformatowany.
Jednak odpowiedź z pagemethod to cała strona html. Rozumiem, że może się to zdarzyć w przypadku metod post, jeśli nie ustawiłeś poprawnie "contentType" w wywołaniu ajax. Ustawiłem to tak samo, jak wszystkie inne wywołania ajaxowe, które działają na stronie (nie używają select2).
Czy select2 ignoruje atrybut "contentType"? Czy jest coś jeszcze, co zrobiłem niewłaściwie?
** EDIT ** Po wysłaniu tego, uważam, że ten problem opisany na stronie github select2 za: Issue 492 - Add Support for contentType to Ajax
Wydaje się, że to nie przejdzie contentType wskroś. Czy mogę ominąć plik selet2 wbudowany w helpera ajax i użyć własnego ręcznie zdefiniowanego?
To jest zalecenie, które należy umieścić w komentarzach, a nie w odpowiedzi. A także, w jaki sposób zmieniające się techniki programistyczne rzeczywiście mogłyby pomóc OP? – ilter
Starałam się, aby plakat był łatwy do zasugerowania/obsługiwany sposób naprawy. Widząc, jak to było zrobione 7 miesięcy temu, niewiele mogę z tym teraz zrobić! :-) –