Select2 与 Ajax Asp.net 4.0 webmethod 请求
Posted
技术标签:
【中文标题】Select2 与 Ajax Asp.net 4.0 webmethod 请求【英文标题】:Select2 With Ajax Asp.net 4.0 webmethod Request 【发布时间】:2014-01-17 17:18:50 【问题描述】:我正在尝试从一个非常简单的网络方法(仅用于测试)驱动 select2 组合框,但似乎没有任何效果。我尝试过使用静态,没有静态 - 没有乐趣。
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public static String getResults(String q, String page_limit)
return "'id':'1','text':'test'";
这里是 Jquery
$("#myHiddenField").select2(
placeholder: "Search for item",
minimumInputLength: 3,
ajax:
url: "mypage.aspx/getResults",
dataType: 'json',
type: "POST",
params:
contentType: 'application/json; charset=utf-8'
,
quietMillis: 100,
data: function (term, page)
return JSON.stringify( q: term, page_limit: 10 );
,
results: function (data)
return results: data ;
);
我这辈子都想不通。有什么想法或建议吗?
编辑
我正在关注“SELECT2”插件的示例,更具体地说是“带有远程数据部分的无限滚动”see here - 该示例适用于该示例。我显然遗漏了一些明显的东西。
【问题讨论】:
当您在服务器代码和 javascript 中单步调试调试器时会发生什么?服务器是否发回任何东西;它是什么样子的?尝试观看 Fiddler2 中发生了什么? 我也想这样做。可悲的是 Select2 创建了一个查询字符串,我认为您对此无能为力:( 我确实解决了这个问题。把你的情况发给我,我看看能不能帮忙。稍后我也会发布我的解决方案 【参考方案1】:我知道这是一个老问题,但我在谷歌上搜索了这个问题,发现了这个问题,修复了它,以为其他人在谷歌上搜索可能有同样的问题。
所以,要解决问题,请替换它;
public static String getResults(String q, String page_limit)
return "'id':'1','text':'test'";
...用这个:
public static String getResults(String q, String page_limit)
return "[ \"id\": \"1\", \"text\": \"test\" ]";
另外,替换这个;
results: function (data)
return results: data ;
...用这个:
results: function (data)
return results: JSON.parse(data.d) ;
【讨论】:
【参考方案2】:试试这个:
ajax:
url: '<%= ResolveUrl("~/mypage.aspx/getResults") %>',
dataType: 'json',
type: "POST",
params:
contentType: 'application/json; charset=utf-8'
,
quietMillis: 100,
data: function (term, page)
return JSON.stringify( q: term, page_limit: 10 );
,
results: function (data)
console.log(data);
return results: data ;
使用:url: '<%= ResolveUrl("~/mypage.aspx/getResults") %>'
而不是:url: "mypage.aspx/getResults"
【讨论】:
【参考方案3】:用于 WebMethods 的方法应该是static
。在此处查看更多详细信息http://encosia.com/why-do-aspnet-ajax-page-methods-have-to-be-static/
编辑
您似乎将data
属性设置为一个函数对象,然后可能将其序列化为一个字符串(结果可能是函数的主体?)而不是将其设置为纯字符串。
尝试将其更改为:data: JSON.stringify( q: term, page_limit: 10 );
此外,results
属性的用途是什么?我对此一无所知,似乎也无法在此处的 jQuery 文档中找到它:http://api.jquery.com/jquery.ajax/
【讨论】:
我确实尝试过静态 - 它没有任何区别 - 我忘了在我原来的帖子中提到这一点。道歉。以上是关于Select2 与 Ajax Asp.net 4.0 webmethod 请求的主要内容,如果未能解决你的问题,请参考以下文章
无法让 select2.js ajax 与 asp.net webform 一起使用
从 ASP.Net 服务获取用于 select2 控件的 AJAX 结果
SELECT2 4.0 与 ASP.Net 中的多选:如何获取和设置所选项目?
使用 ajax 和分页的带有 ASP 下拉列表控件的 Select2