次のJavaScriptでselect2を設定しています
$j("#" + name).select2({
placeholder: "",
width:"300px",
minimumInputLength: 3,
ajax: {
url: "/MyService.asmx/ServiceMethod",
dataType: 'json',
data: function (term) {
return {
q: term // search term
};
},
results: function (data) {
alert('results');
return {results: data};
},
success: function() {
alert('success');
},
error: function () {
alert('error');
},
},
});
私が呼び出しているメソッドは次のとおりです。
<WebMethod(enableSession:=True)>
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)>
Public Function ServiceMethod(q as String) As String
Dim temp As String = "[{'id':'35','text':'Drew'}]"
Return temp
End Function
私も<ScriptService()>
クラスを回っています。enableSession が存在するのは、最終的にはそれを必要とするサービスで多くのロジックを実行することになるためですが、今のところ、JSON を使用して単純な文字列を返そうとしています。
Web サービスにブレークポイントを設定しましたが、それが呼び出されていることがわかります。JSONを返していることはわかっています。また、select2 が JSON の戻り値に「id」と「text」を期待していることも知っています。
私の問題は次のとおりです: 3 文字を入力した後、データ関数が呼び出され (アラートを入れました)、Web サービスのブレークポイントがヒットしますが、結果、成功、またはエラーのイベントはその後発生しません。select2 が回転するだけで、何も起こりません。コンソールに javascript エラーは入力されず、なぜ ajax がサービスから返された値を処理しないのかについての情報をどこで探すべきかについてさえ途方に暮れています。
これが機能しない理由を確認するために、少なくともどこを見るべきかを誰かに教えてもらえますか?