小编Sun*_*oot的帖子

JQuery Ajax - 如何在进行Ajax调用时检测网络连接错误

我有一些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调用时检测网络连接问题?

javascript ajax jquery

84
推荐指数
3
解决办法
10万
查看次数

ASP.NET MVC 2 - Html.DropDownList与ViewModel的混淆

我对如何在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

32
推荐指数
3
解决办法
8万
查看次数

ASP.NET - AppDomain.CurrentDomain.GetAssemblies() - AppDomain重新启动后丢失的程序集

我有一个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)

c# asp.net reflection asp.net-mvc assemblies

30
推荐指数
1
解决办法
1万
查看次数

Node/Express.js - 覆盖每个请求的"Views"文件夹的位置

在我的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的区域功能,其中每个区域都有自己的视图文件夹.

node.js express

26
推荐指数
2
解决办法
2万
查看次数

Node.js/Express.js - 如何覆盖/拦截res.render函数?

我正在用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)

它似乎工作.不确定它是否是最好的解决方案,因为我正在为每个请求创建一个新的响应包装器对象,这是一个问题吗?

javascript connect prototypal-inheritance node.js express

23
推荐指数
3
解决办法
2万
查看次数

ASP.NET - 在代码中动态注册HttpHandler(不在web.config中)

可能重复:
在.NET中以编程方式添加HttpHandler的任何方法?

有没有办法可以动态注册IHttpHandlerC#代码,而不必手动将其添加到system.web/httpHandlersweb.config中的部分.

这可能听起来很疯狂,但我有充分的理由这样做.我正在构建一个WidgetLibrary,网站所有者只需将.dll文件放入他们的bin目录就可以使用,并希望以最少的配置支持web.config.

c# asp.net web-config httphandler ihttphandler

13
推荐指数
2
解决办法
1万
查看次数

iPad Safari iOS - SECURITY_ERR:访问"document.cookie"时的Dom Exception 18

在iOS 5.1(iPad)上运行Safari,我的JavaScript代码抛出以下异常:

SECURITY_ERR:Dom异常18:尝试突破用户代理的安全策略

......每当我拨打电话时 document.cookie

现在,这是一个通过适当的URL访问的远程托管网站.所有桌面浏览器运行正常,这只会影响iPad上的Safari.我试图谷歌的错误,但我只是引用调用本地文件(file://),我没有这样做,因为它是一个远程网站.

有任何想法吗?

javascript safari ipad ios domexception

13
推荐指数
1
解决办法
5588
查看次数

如何检查UpdatePanel是否回发?

有没有办法确定是否<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)

.net asp.net ajax updatepanel http-post

10
推荐指数
2
解决办法
1万
查看次数

节点js - http.request()连接池问题

考虑以下简单的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. …

connection-pooling request node.js

10
推荐指数
1
解决办法
9200
查看次数

正则表达式 - 匹配除URL中的特定单词之外的任何字符序列

我想匹配包含任何有效URL字符序列但不包含特定单词的URL.有问题的网址http://gateway.ovid.com我希望匹配"网关"这个词以外的任何内容:

类似于以下内容:

^http://([a-z0-9\-\.]+|(?<!gateway))\.ovid\.com$
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.


更新:抱歉忘记提及语言,它是C#.NET

c# regex

9
推荐指数
1
解决办法
1万
查看次数