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 に答える