我有一个列表框,我想通过使用jquery/ajax从页面后面的代码调用webmethod来更新它。列表框显示所有登录的用户(他们在成功登录时被添加到全局列表中)。显然,我可以使用完整的页面刷新来更新列表框,但这在美观上并不令人满意。我有两个问题。
以下是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);});
欢迎并感谢所有的帮助和建议。
发布于 2012-04-03 13:54:16
除非将参数传递到函数中,否则不需要数据字段中的任何内容。别管那块地,它就能正常工作了。
我也不需要使用beforeSend参数,但是您的场景可能略有不同。
发布于 2013-11-29 23:28:31
实际上,问题似乎是AJAX调用属性数据。请按以下方式修改数据属性:
data: "{}",不需要发送任何参数("json=“+JSON.stringify(数据))。您的web方法不包含任何参数)。同样,根据servarevitas的回答,不需要beforeSend参数-- ajax调用已经将内容类型指定为Json。
https://stackoverflow.com/questions/9994001
复制相似问题