【问题标题】:append webmethod results to a listbox using javascript使用 javascript 将 webmethod 结果附加到列表框
【发布时间】:2012-04-23 10:45:41
【问题描述】:

我正在尝试使用 ajax/jquery/webmethod 更新列表框。通过在 chrome 中检查开发人员工具中的网络活动,我可以看到 webmethod 正在返回值,但这些值没有被附加到列表框中。所以我想问题一定出在我的javascript代码上。有人可以看一下代码并告诉我为什么这不起作用吗? listbod 名为 ListBox1,位于 Homepage.aspx 页面中。

$(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: "{}",
        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(''));
            }
            else alert("No new items to update...");
        }
    });
}, 5000);

});

[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();                                          

        return results;
    }

【问题讨论】:

    标签: asp.net jquery webmethod


    【解决方案1】:

    如果你想遍历一个数组,你需要:

    for (var i = 0; i < results.length; i++) {
    

    您所拥有的将遍历结果对象的属性。

    另外,我不确定您填充选择的方式。试试这个:

    for (var i = 0; i < results.length; i++) {
        lBox[0].options[i] = new Option(results[i], results[i], true, false)
    }
    

    【讨论】:

    • 我按照您的建议进行了尝试,但结果仍未附加到列表框中。还有其他想法吗?
    • 现在可以使用了,非常感谢!一个小问题,我登录的第一个用户在列表框中出现两次,后续用户根据需要出现一次。你知道是什么原因造成的吗?它可能归结为应用程序中其他地方的错误。
    • 好吧,我认为我粘贴的代码应该是 'lBox[0].options[i] = ...' 而不是 'lBox[0].options[i + 1] = 。 ...'。除此之外,我在您的代码中看不到任何其他可能导致这种情况的内容。
    • 您在浏览器中使用开发者工具吗?您可以使用这些查看从您的 Web 方法返回的原始 JSON,这将帮助您确定问题是客户端还是服务器端。
    • 是的,我在 chrome 中使用开发人员工具,它只显示了两个登录用户的 JSON 响应,所以问题一定出在上面提到的 [i + 1] 上。感谢您解决这个问题,并感谢您的总体帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-03-28
    • 2018-08-15
    • 2021-06-07
    • 2022-01-05
    • 2012-03-10
    • 2021-07-29
    • 2022-11-17
    • 2021-01-11
    相关资源
    最近更新 更多