繁体   English   中英

Select2与Ajax Asp.net 4.0 webmethod请求

[英]Select2 With Ajax Asp.net 4.0 webmethod Request

我正在尝试通过一个非常简单的Web方法(仅用于测试)来驱动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”插件的示例,更具体地讲是“带有远程数据部分的无限滚动”, 请参见此处 -在该示例中工作正常。 我显然缺少明显的东西。

尝试这个:

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"

我知道这是一个古老的问题,但是我正在使用Google搜索功能,找到了此问题,将其修复,以为其他使用Google搜索功能的人可能也遇到了同样的问题。

因此,要解决此问题,请替换掉它;

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) };
 }

用于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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM