jquery/ajaxを使用してコードビハインドページからWebメソッドを呼び出すことで更新したいリストボックスがあります。リストボックスには、ログインしているすべてのユーザーが表示されます(ログインに成功すると、グローバルリストに追加されます)。私は明らかにフルページのリフレッシュを使用して更新するリストボックスを得ることができますが、これは美的には満足できません。私は2つの問題があります。jquery/ajax/webmethodを使用してリストボックスを更新する
私はChromeでアプリケーションを実行し、開発ツールを使ってネットワークの動作をチェックすると、呼び出されているWebメソッドが表示されません。私は(私が見ることができる)他のwebmethodsが発射されている/期待どおりに実行されている。
私が見つけた例に基づいてスクリプトを書いたので、(私が(a)リストからデータを正しく取得していれば、私は比較的新しいです。表示されるユーザー名)と(b)リストボックスに正しく追加します。ここ
は、WebMethod属性です:
[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;
}
とスクリプト:
$(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);
});
すべてのヘルプや提案を歓迎し、あなたが関数にパラメータを渡していない限り、あなたは、データフィールドには何もしたくない
これをクリアしてくれてありがとう、私は実際にデータフィールドが何だったのか分からなかった。しかし、私はデータフィールドには、私は、クロムの開発者ツールからサーバ500のエラーを取得していたし、検索後、それは私が見つけたソリューションでした - それはエラーを停止したが、私は見ることができないWebメソッドが上記のように呼び出されます。私は別のwebMethod queryInvitedByを持っているので、5秒ごとに(期待どおり)呼び出されているのがわかります。なぜ、私はgetCurrentListが呼び出されているのを見ることができないのですか? – MattSull
私はデータフィールドにあるものを取り出しました。私は今Webmethod発射を見ることができますが、私は再びそのエラーを取得しています: "500内部サーバーのエラー"。要求に対するプレビュー/応答を調べると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示されます。 – MattSull
C#コードをステップ実行して、例外をスローするものを正確に確認します。あなたの最初のforループには括弧がありません。 – servarevitas3