我有一些Javascript JQuery代码,每隔5分钟对服务器进行一次Ajax调用,这是为了让服务器会话保持活动并保持用户登录.我$.ajax()在JQuery中使用方法.这个函数似乎有一个'错误'属性,我试图在用户的互联网连接断开时使用,以便KeepAlive脚本继续运行.我正在使用以下代码:
var keepAliveTimeout = 1000 * 10;
function keepSessionAlive()
{
$.ajax(
{
type: 'GET',
url: 'http://www.mywebapp.com/keepAlive',
success: function(data)
{
alert('Success');
setTimeout(function()
{
keepSessionAlive();
}, keepAliveTimeout);
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert('Failure');
setTimeout(function()
{
keepSessionAlive();
}, keepAliveTimeout);
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我会在屏幕上每10秒钟在一个警告框中弹出"成功",这很好.但是,一旦我拔下网线,我就什么也得不到,我期待错误功能被调用并看到"故障"警告框,但没有任何反应.
假设'错误'功能仅适用于从服务器返回的非'200'状态代码,我是否正确?有没有办法在进行Ajax调用时检测网络连接问题?
我对如何在ASP.NET MVC 2.0 R2上使用新的强类型Html.DropDownListFor帮助程序感到十分迷茫和困惑
在我写的视图中:
<%= Html.DropDownListFor(m => m.ParentCategory, new SelectList(Model.Categories, "CategoryId", "Name", Model.ParentCategory), "[ None ]")%>
<%= Html.ValidationMessageFor(m => m.ParentCategory)%>
Run Code Online (Sandbox Code Playgroud)
因此我的Model对象是:
public class CategoryForm : FormModelBase
{
public CategoryForm()
{
Categories = new List<Category>();
Categories.Add(new CategoryForm.Category() {
CategoryId = 1,
Name = "CPUs" });
Categories.Add(new CategoryForm.Category() {
CategoryId = 2,
Name = "Memory" });
Categories.Add(new CategoryForm.Category() {
CategoryId = 3,
Name = "Hard drives" });
}
// ...other props, snip... //
public Category ParentCategory { get; set; }
public …Run Code Online (Sandbox Code Playgroud) asp.net-mvc html-helper viewmodel asp.net-mvc-2 drop-down-menu
我有一个Bootstrapper,它可以查看ASP.NET MVC应用程序中的所有程序集,找到实现IBootstrapperTask接口的类型,然后使用IOC Contrainer注册它们.我们的想法是,您可以随意将您的IBootstrapperTasks放置在任何地方,并按您喜欢的方式组织您的项目.
Bootstrapper代码:
public class Bootstrapper
{
static Bootstrapper()
{
Type bootStrapperType = typeof(IBootstrapperTask);
IList<Assembly> assemblies = AppDomain.CurrentDomain.GetAssemblies();
List<Type> tasks = new List<Type>();
foreach (Assembly assembly in assemblies)
{
var types = from t in assembly.GetTypes()
where bootStrapperType.IsAssignableFrom(t)
&& !t.IsInterface && !t.IsAbstract
select t;
tasks.AddRange(types);
}
foreach (Type task in tasks)
{
if (!IocHelper.Container().Kernel.HasComponent(task.FullName))
{
IocHelper.Container().AddComponentLifeStyle(
task.FullName, task, LifestyleType.Transient);
}
}
}
public static void Run()
{
// Get all registered IBootstrapperTasks, call Execute() method
}
} …Run Code Online (Sandbox Code Playgroud) 在我的Node/Express.js项目中,我可以全局设置views文件夹,如下所示:
app.configure(function() {
app.set('views', __dirname + '/views');
.... snip ....
});
Run Code Online (Sandbox Code Playgroud)
...并且我的所有视图模板都进入了views文件夹.
是否可以覆盖Express在请求的基础上查找请求的视图?例如,类似于以下内容:
app.get('/', function(req, res) {
res.render('index', { viewFolder: 'otherViews' });
});
Run Code Online (Sandbox Code Playgroud)
我问的原因是我正在尝试复制Microsoft ASP.NET MVC的区域功能,其中每个区域都有自己的视图文件夹.
我正在用Connect/Express.js构建一个Node.js应用程序,我想拦截res.render(视图,选项)函数来运行一些代码,然后再转发到原始的渲染函数.
app.get('/someUrl', function(req, res) {
res.render = function(view, options, callback) {
view = 'testViews/' + view;
res.prototype.render(view, options, callback);
};
res.render('index', { title: 'Hello world' });
});
Run Code Online (Sandbox Code Playgroud)
它看起来像一个人为的例子,但它确实适合我正在构建的整体框架.
我对JavaScript的OOP和Prototypal继承的了解有点弱.我该怎么办?
更新:经过一些实验,我想出了以下内容:
app.get('/someUrl', function(req, res) {
var response = {};
response.prototype = res;
response.render = function(view, opts, fn, parent, sub){
view = 'testViews/' + view;
this.prototype.render(view, opts, fn, parent, sub);
};
response.render('index', { title: 'Hello world' });
});
Run Code Online (Sandbox Code Playgroud)
它似乎工作.不确定它是否是最好的解决方案,因为我正在为每个请求创建一个新的响应包装器对象,这是一个问题吗?
有没有办法可以动态注册IHttpHandlerC#代码,而不必手动将其添加到system.web/httpHandlersweb.config中的部分.
这可能听起来很疯狂,但我有充分的理由这样做.我正在构建一个WidgetLibrary,网站所有者只需将.dll文件放入他们的bin目录就可以使用,并希望以最少的配置支持web.config.
在iOS 5.1(iPad)上运行Safari,我的JavaScript代码抛出以下异常:
SECURITY_ERR:Dom异常18:尝试突破用户代理的安全策略
......每当我拨打电话时 document.cookie
现在,这是一个通过适当的URL访问的远程托管网站.所有桌面浏览器运行正常,这只会影响iPad上的Safari.我试图谷歌的错误,但我只是引用调用本地文件(file://),我没有这样做,因为它是一个远程网站.
有任何想法吗?
有没有办法确定是否<asp:UpdatePanel />已执行类似于我们可以使用的Ajax回发...
if(!Page.IsPostBack) { ...snip }
Run Code Online (Sandbox Code Playgroud)
...确定是否正在进行按钮提交的回发.
我正在尝试从jQuery中检测Ajax请求,但它正在拾取UpdatePanel请求,我想要排除,例如......
if (Request.IsAjaxRequest() && !Page.IsUpdatePanelPostback)
{
// Deal with jQuery Ajax
}
Run Code Online (Sandbox Code Playgroud) 考虑以下简单的Node.js应用程序:
var http = require('http');
http.createServer(function() { }).listen(8124); // Prevent process shutting down
var requestNo = 1;
var maxRequests = 2000;
function requestTest() {
http.request({ host: 'www.google.com', method: 'GET' }, function(res) {
console.log('Completed ' + (requestNo++));
if (requestNo <= maxRequests) {
requestTest();
}
}).end();
}
requestTest();
Run Code Online (Sandbox Code Playgroud)
它向google.com发出2000个HTTP请求,一个接一个.问题是它要求第5号并暂停约3分钟,然后继续处理请求6-10,然后再暂停3分钟,然后请求11-15,暂停等等.编辑: 我尝试将www.google.com更改为localhost,这是一个运行我的机器的非常基本的Node.js应用程序,返回"Hello world",我仍然可以暂停3分钟.
现在我看了我可以增加连接池限制:
http.globalAgent.maxSockets = 20;
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行它,它处理请求1 - 20,然后暂停3分钟,然后请求21 - 40,然后暂停,依此类推.
最后,经过一些研究,我了解到我可以完全通过设置agent: false请求选项来禁用连接池:
http.request({ host: 'www.google.com', method: 'GET', agent: false }, function(res) {
...snip....
Run Code Online (Sandbox Code Playgroud)
......它会完全满足所有2000个请求.
我的问题,这样做是个好主意吗?是否有可能导致HTTP连接过多的危险?为什么它暂停3分钟,当然如果我已完成连接,它应该直接将它添加到池中准备好下一个请求使用,那么为什么它等待3分钟?原谅我的无知.
如果做不到这一点,Node.js应用程序制作潜在大量HTTP请求的最佳策略是什么,而不会锁定或崩溃?
我在Mac OSX 10.8.2上运行Node.js版本0.10. …
我想匹配包含任何有效URL字符序列但不包含特定单词的URL.有问题的网址http://gateway.ovid.com我希望匹配"网关"这个词以外的任何内容:
但
类似于以下内容:
^http://([a-z0-9\-\.]+|(?<!gateway))\.ovid\.com$
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.
更新:抱歉忘记提及语言,它是C#.NET
asp.net ×3
c# ×3
javascript ×3
node.js ×3
ajax ×2
asp.net-mvc ×2
express ×2
.net ×1
assemblies ×1
connect ×1
domexception ×1
html-helper ×1
http-post ×1
httphandler ×1
ihttphandler ×1
ios ×1
ipad ×1
jquery ×1
reflection ×1
regex ×1
request ×1
safari ×1
updatepanel ×1
viewmodel ×1
web-config ×1