我想通过jQuery AJAX调用从MVC函数返回一个字符串数组.
我的客户端代码是:
function get_categories() {
var url = "/Profile/GetCharacters";
$.post(url, function (data) {
alert(data);
});
Run Code Online (Sandbox Code Playgroud)
但我无法读取数组元素.在alert(data)它总是说,system.array[]
并在alert(data[0])其中说s(即system.array []中的第一个字符)而不是数组元素.
这是我的服务器端代码的简化版.原因是原来很复杂:)
public Array GetCharacters()
{
var ret = new string[10];
ret[0]="abc";
ret[1] = "def";
ret[2] = "ghi";
return (ret);
}
Run Code Online (Sandbox Code Playgroud)
但这会给"System.string []"而不是访问单个值时的相同问题
我在 ASP.NET MVC3 中创建一个聊天应用程序。我使用长轮询和 AsyncController 来做到这一点
当用户发布保存在数据库中的聊天时,要检索我是否应该不断检查数据库记录中的更改或在一定时间间隔后检查,或者是否有更好/有效的方法来执行此操作
我遇到了这个问题,但无法得到可用的答案。
我有一个函数有一个循环,在每个循环结束时休眠6秒
Thread.Sleep(TimeSpan.FromSeconds(6));
这循环10次,即该功能运行60秒,每次暂停6秒.
我在循环开始时进行了身份验证测试
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
return null;
}
Run Code Online (Sandbox Code Playgroud)
所以每次它第一次认证然后运行并等待6秒.
这是我的功能:
while (counter < 10)
{
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
return null;
}
// doing stuff
Thread.Sleep(TimeSpan.FromSeconds(6));
counter++;
}
Run Code Online (Sandbox Code Playgroud)
现在用户同时注销(比如在第15秒).我使用ajax注销,因此不想重定向我的页面.即使在注销后,IsAuthenticated对于所有10个循环始终为true,并且仅在重新执行此函数时才为false
注销我使用:
FormsAuthentication.SignOut();
Session.Abandon();
Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
HttpCookie cookie = HttpContext.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
cookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(cookie);
}
Run Code Online (Sandbox Code Playgroud)
但仍然是真的.. 我想在用户注销后立即停止执行我的线程