我想要使用select2 jQuery插件,并希望使用自动完成功能从ajax调用到aspx.net WebMethod
我的问题是如何在我的ajax调用中使用该术语进行搜索。我试过这个并且它有效 JavaScript代码:
$(".js-example-tags").select2({
ajax: {
dataType: "json",
type: "POST",
async: true,
contentType: "application/json; charset=utf-8",
url: "Code/Services/Dashboard/DashboardService.asmx/AccessRemoteData?",
dataFilter: function(data) {
var msg = eval('(' + data + ')');
if (msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
},
data: { p_Term: 'd', p_Operator: 'StartsWith', p_LayoutName: layoutName } ,
processResults: function (data) {
return {
results: data.items,
};
},
delay: 250,
error: function() {
HideWaitMe();
alert("An error occurred");
}
}
});
WebMethod代码:
<WebMethod(EnableSession:=True)>
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False, XmlSerializeString:=False)>
Public Function AccessRemoteData(p_Term As String, p_Operator As String, p_LayoutName As String) As String
Dim serialiser As New JavaScriptSerializer()
Dim listNode As Items
Try
Dim tableKey As Long = m_SqlCo.GetLayout(p_LayoutName).TableKey
listNode = m_DashboardManager.SearchRlinkNames(p_Operator, tableKey, p_Term)
Catch ex As Exception
Dim msg As New TError(Nothing, "Error", TSz.MsgLevelEnum.ErrorLevel, TSz.MsgTypeEnum.OtherType, "SearchService.SearchInFieldStatistics " & "An error occured while loading species", True)
WriteLog(msg)
'response.Success = False
SessionStateManager.TitleMessage = "Error"
SessionStateManager.InfoMessage = String.Format("An error occurred while loading list of names. Message:{0}", ex.Message)
'response.Url = "BioloMicsInfo.aspx"
SessionStateManager.GoToLoginPage = False
Return serialiser.Serialize(False)
End Try
Return JsonConvert.SerializeObject(listNode)
End Function
它可以工作,但我的问题是当我想使用与文档中相同的内容时:
data: function (params) {
var aa = {
//term: params.term
p_Term: params.term, // search term
p_Operator: 'StartsWith',
p_LayoutName: layoutName
};
return aa;
},
我的请求中有错误
例外:
System.ArgumentException
消息:
Primitive JSON non valide : p_Operator.
stackstrace:`àSystem.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()
àSystem.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
àSystem.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input,Int32 depthLimit,JavaScriptSerializer serializer)
àSystem.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer,String input,Type type,Int32 depthLimit)
àSystem.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)
àSystem.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context,JavaScriptSerializer serializer)
àSystem.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext context)
àSystem.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context,WebServiceMethodData methodData)`
你能帮我解决一下我的问题吗?因为我不知道如何获取输入字符串以将其传递给我的服务以返回数据。
答案 0 :(得分:0)
我不知道如何解释它,但是当我把它改成
时data: function (params) {
var aa = {
//term: params.term
p_Term: params.term, // search term
p_Operator: 'StartsWith',
p_LayoutName: layoutName
};
return JSON.stringify(aa);
},
所以添加了json.stringify它没有添加任何问题
minimumInputLength: 1