아약스로드시 select2을 사용하려고합니다. 여기 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"속성을 무시합니까? 아니면 내가 잘못 한 다른 것이 있습니까? Issue 492 - Add Support for contentType to Ajax
그것을 통해 ContentType을 통과하지 않는 것 같습니다 :
은 **이 게시 한 후 편집 ** , 나는 선택 2의 GitHub의 사이트에 나와이 문제를 발견했다. selet2가 ajax 헬퍼에 내장되어 있고 수동으로 정의 된 것을 사용하는 것을 우회 할 수 있습니까?
이것은 답변이 아닌 의견에 달아야하는 권장 사항입니다. 또한 프로그래밍 기술을 변경하면 OP가 실제로 어떻게 도움이 될까요? – ilter
포스터를 쉽게 제안/지원되는 방법으로 수정하려고했습니다. 이 일이 7 개월 전에 완료되었으므로 지금은별로 할 수 없습니다. :-) –