私はselect2をajax読み込みで使用しようとしています。ここで select2 with ajax postメソッド
は私のコードです: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 };
}
}
});
AJAX呼び出しは、同じページのコードビハインドでWebMethod属性/ pagemethodにある:
[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;
}
テキストボックスにデータを入力、 POST要求が行われ、jsonが適切に書式設定されているように見えます。
ただし、ページングメソッドからの応答はhtmlページ全体です。 ajax呼び出しで "contentType"が正しく設定されていないと、これがポストメソッドで発生する可能性があると私は理解しています。私は他のすべてのAjax呼び出しと同じ設定をしています(select2を使用していません)。
select2はcontentType属性を無視しますか?それとも私が間違ってやったことがありますか?
** EDIT ** これを掲示した後、私はこの問題はSELECT2のgithubのサイトに記載されているが見つかりました: Issue 492 - Add Support for contentType to Ajax
それはcontentTypeの通過しないことが表示されます。 selet2の組み込みのajaxヘルパーをバイパスし、手動で定義したものを使用できますか?
これは、コメントではなく、回答に入れるべき推奨事項です。また、変化するプログラミングテクニックは、実際どのようにOPに役立つでしょうか? – ilter
ポスターを簡単に提案/修正する方法を手に入れようとしていただけです。これが7ヶ月前に行われたのを見て、私は今それについてはほとんどできません! :-) –