0

我正在尝试使用 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;
    }
4

1 回答 1

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)
}
于 2012-04-23T11:42:28.633 回答