Ich versuche select2 mit AJAX-Laden zu verwenden.select2 mit Ajax-Post-Methode
Hier ist mein 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 };
}
}
});
Der Ajax-Aufruf ist zu einem Webmethod/Pagemethod in dem Code-Behind der gleichen Seite:
[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;
}
Wenn Daten in das Textfeld eingegeben hat, die Eine POST-Anfrage wird gestellt, und der JSON-Versand scheint ordnungsgemäß formatiert zu sein.
jedoch die Antwort von der Pagemethod ist die gesamte HTML-Seite. Es ist mein Verständnis, dass dies mit Post-Methoden auftreten kann, wenn Sie Ihren "contentType" nicht ordnungsgemäß im Ajax-Aufruf festgelegt haben. Ich habe es so eingestellt wie alle meine anderen Ajax-Aufrufe, die auf der Seite funktionieren (sie verwenden nicht select2).
Hat ignorieren select2 den "content" Attribut? Oder habe ich etwas anderes falsch gemacht?
** EDIT ** Danach veröffentlichen, fand ich dieses Problem bei select2 der Github Website aufgeführt: Issue 492 - Add Support for contentType to Ajax
Es scheint, dass es nicht durch contenthindurchgeht. Kann ich Selet2's eingebauten Ajax Helfer umgehen und meinen eigenen manuell definierten verwenden?
, dass eine Empfehlung ist, die auf Kommentare gesetzt werden sollten, nicht in einem answer.Also, wie würden Ändern Programmiertechniken helfen, die OP, wirklich? – ilter
War nur versucht, das Poster eine einfache vorgeschlagene/unterstützte Art und Weise zu beheben. Da dies vor 7 Monaten gemacht wurde, kann ich jetzt nicht viel dagegen tun! :-) –