【问题标题】:JavaScript call to page method: error 500. JSONJavaScript 调用页面方法:错误 500. JSON
【发布时间】:2010-03-22 21:27:38
【问题描述】:

我在这里使用自动完成控件:http://www.ramirezcobos.com/labs/autocomplete-for-jquery-js/comment-page-2/

我已经将其修改为:

var json_options;
    json_options = {
        script:'ReportSearch.aspx/GetUserList?json=true&limit=6&',
        varname:'input',
        json:true,
        shownoresults:true,
        maxresults:16,
        callback: function (obj) { $('#json_info').html('you have selected: '+obj.id + ' ' + obj.value + ' (' + obj.info + ')'); }
    };

$('#ctl00_contentModule_txtJQuerySearch').autoComplete(json_options);

我在 C# Code behind (aspx.cs) 中有以下方法

    [System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static string[] GetUserList(string input)
{
    List<string> lUsers = new List<string>();

    Server.DAL.SQLServer2005.User user = new Server.DAL.SQLServer2005.User();
    Server.Info.AuthUser aUser = (Server.Info.AuthUser)HttpContext.Current.Session["AuthUser"];
    List<Server.Info.User.UserDetails> users = user.GetUserList(aUser, input, 16, true);
    users.ForEach(delegate(ReportBeam.Server.Info.User.UserDetails u)
    {
        lUsers.Add("(" + u.UserName + ")" + u.LastName + ", " + u.FirstName);
    });
    return lUsers.ToArray();
}

我得到的错误是:

“/WebPortal4”应用程序中的服务器错误。未知的网络方法 获取用户列表。参数名称:方​​法名

如果我更改任何参数名称,我会收到一条错误消息,告诉我参数名称不匹配。现在一切都如其所愿,它正在轰炸。

任何帮助都会动摇。

【问题讨论】:

    标签: c# asp.net javascript ajax json


    【解决方案1】:

    如果您的代码在用户控件中(而不是在实际的 aspx 中),则可能会导致问题。我想它不应该,但是我自己也遇到了问题,不记得它们的具体外观,但最后我反驳说将我的 web 方法放在 asmx 文件而不是 aspx 文件中,如果它们是从除了 aspx 本身之外的任何东西都可以达到,而且效果很好 =)

    【讨论】:

    • 我想我可以尝试一下,并在 asmx 文件中启用会话。
    • 你不能在用户控件中访问 webmethod/pagemethod,它们必须在父 aspx 或 webservice ascx 中。
    • @Matt:我对 asmx 解决方案很满意,所以我从来没有真正追查过为什么我没有让它工作,但是有一个令人满意的答案真是太好了,然后 =) 干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多