Select2 ajax 正确调用 web 服务,但之后啥也不做
Posted
技术标签:
【中文标题】Select2 ajax 正确调用 web 服务,但之后啥也不做【英文标题】:Select2 ajax is correctly calling webservice, but then doing nothing afterSelect2 ajax 正确调用 web 服务,但之后什么也不做 【发布时间】:2013-07-23 02:16:51 【问题描述】:我正在使用以下 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 个字符后,数据函数调用(我在其中放置了一个警报),webservice 断点被命中,但之后没有任何结果、成功或错误事件触发。 select2 只是旋转,什么都没有发生。控制台中没有输入任何 javascript 错误,我什至不知道在哪里寻找关于为什么 ajax 不处理服务返回值的信息。
谁能指出我至少在哪里寻找以了解为什么这不起作用?
【问题讨论】:
【参考方案1】:所以我在得到查看网络日志的提示后自己修复了这个问题。服务返回正确,但返回的是 XML,而不是 JSON。我必须进行 2 次修改,一切正常。
我的工作 ajax:
ajax:
url: "/MyService.asmx/ServiceMethod",
type: 'POST',
params:
contentType: 'application/json; charset=utf-8'
,
dataType: 'json',
data: function (term, page)
return JSON.stringify( q: term, page_limit: 10 );
,
results: function (data)
return results: data;
,
,
重要的变化是类型,将 contentType 放入 params 包装器,以及 JSON.stringify-ing 数据。我将更改通过的内容和通过的方式,但现在至少可以进行沟通。希望这可以帮助其他正在寻找类似解决方案的人。
【讨论】:
以上是关于Select2 ajax 正确调用 web 服务,但之后啥也不做的主要内容,如果未能解决你的问题,请参考以下文章
使用 select2 与 ajax 调用 asp.Net 服务自定义参数
从 ASP.Net 服务获取用于 select2 控件的 AJAX 结果