首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery/ajax/webmethod更新列表框

使用jquery/ajax/webmethod更新列表框
EN

Stack Overflow用户
提问于 2012-04-03 13:12:14
回答 2查看 2.2K关注 0票数 0

我有一个列表框,我想通过使用jquery/ajax从页面后面的代码调用webmethod来更新它。列表框显示所有登录的用户(他们在成功登录时被添加到全局列表中)。显然,我可以使用完整的页面刷新来更新列表框,但这在美观上并不令人满意。我有两个问题。

  1. 当我用chrome运行应用程序,并通过开发工具检查网络活动时,我看不到正在调用的webmethod。我有其他的webmethods (我可以看到)正在按预期的方式被激发/执行。
  2. 我是根据我找到的一个例子编写的脚本,所以我不完全确定(我对这些领域比较陌生)是否(a)正确地从列表中获取数据(我只希望显示用户名)和(b)将它正确地附加到列表框中。

以下是webmethod:

代码语言:javascript
复制
[WebMethod()]
    public static string[] getCurrentList()
    {
        int count = 0; 
        for(int i = 0; i < Global.ListUsers.Count(); i++)
            count++;

        string[] results = new string[count];

        for (int i = 0; i < count; i++)
        {
            results[i] = Global.ListUsers[i].Username.ToString();**//edited...** 
        }                                            

        return results;
    }

剧本:

代码语言:javascript
复制
$(function updateListbox() {
var lBox = $('select[id$=ListBox1]');
setInterval(function () {
    $.ajax({
        beforeSend: function (req) {
            req.setRequestHeader("Accept", "application/json");
        },
        type: "POST",
        url: "Homepage.aspx/getCurrentList",
        data: "json=" + JSON.stringify(data),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            var results = data.d;
            if (results.length > 0) {
                var updatedList = [];
                for (var i in results) {
                    updatedList.push(results[i]);
                }
                $(lBox).append(updatedList.join('\n'));
            }
            else alert("No new items to update...");
        }
    });
}, 5000);

});

欢迎并感谢所有的帮助和建议。

EN

回答 2

Stack Overflow用户

发布于 2012-04-03 13:54:16

除非将参数传递到函数中,否则不需要数据字段中的任何内容。别管那块地,它就能正常工作了。

我也不需要使用beforeSend参数,但是您的场景可能略有不同。

票数 0
EN

Stack Overflow用户

发布于 2013-11-29 23:28:31

实际上,问题似乎是AJAX调用属性数据。请按以下方式修改数据属性:

代码语言:javascript
复制
data: "{}",

不需要发送任何参数("json=“+JSON.stringify(数据))。您的web方法不包含任何参数)。同样,根据servarevitas的回答,不需要beforeSend参数-- ajax调用已经将内容类型指定为Json。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9994001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档