Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 我应该让用户挂起吗?_Asp.net Mvc_Ajax_Jquery Ui_Jquery - Fatal编程技术网

Asp.net mvc 我应该让用户挂起吗?

Asp.net mvc 我应该让用户挂起吗?,asp.net-mvc,ajax,jquery-ui,jquery,Asp.net Mvc,Ajax,Jquery Ui,Jquery,我真的不知道在这种情况下该怎么办。我有一些支持ajax的jQueryUI1.7选项卡。现在,当单击选项卡时,它将转到我的asp.net mvc控制器操作方法。然后执行所需的任何操作并返回局部视图 现在我不知道为什么,但有时我的服务器挂起,但我猜所有的服务器都挂起,因为有时当我去网站时,加载要花很长时间,但如果你刷新它会立即加载,我的网站也是如此 我的网站会超快速加载一个标签X次,然后突然一个请求就会挂起,大概15秒后就会加载。或者,如果你只是刷新页面,它会返回并开始再次超快速加载它们 但问题是请

我真的不知道在这种情况下该怎么办。我有一些支持ajax的jQueryUI1.7选项卡。现在,当单击选项卡时,它将转到我的asp.net mvc控制器操作方法。然后执行所需的任何操作并返回局部视图

现在我不知道为什么,但有时我的服务器挂起,但我猜所有的服务器都挂起,因为有时当我去网站时,加载要花很长时间,但如果你刷新它会立即加载,我的网站也是如此

我的网站会超快速加载一个标签X次,然后突然一个请求就会挂起,大概15秒后就会加载。或者,如果你只是刷新页面,它会返回并开始再次超快速加载它们

但问题是请求被发送到挂起的服务器。因此,我尝试在所有ajax内容上设置jquery超时,这将调用jquery ui选项卡的中止

但它从来都不起作用,从我在这个网站上读到的信息来看,我猜是因为请求在服务器上,中止不会停止服务器上的内容。所以,如果我看看firebug,那个被吊死的请求仍然在运行

现在,这给我带来了一个巨大的问题,因为它把整个页面搞得一团糟。比如,如果用户试图点击另一个标签,他们很可能需要点击两次才能加载。发生的另一件事是,如果该请求挂起了它们所在的任何选项卡,则它们将与该选项卡合并。因此,有时一个选项卡将包含所有其他选项卡的部分

所以,如果它挂起并且没有完成,它将真正地扰乱ajax选项卡。我不知道如何解决这个问题

所以我不知道该怎么办

让它们挂起,不管服务器需要多长时间来确定如何完成该请求(当发出ajax请求时,我会禁用所有选项卡。这是因为如果有人说加载了一个选项卡,但没有让它完成,并试图转到另一个选项卡,那么选项卡合并在一起也会出现同样的问题)。或者中止请求,并将选项卡拧紧

我有很多选择。有人有更好的选择吗


谢谢

我们在使用jquery队列管理器方面取得了很大的成功-


当执行第二个请求时,它将中止第一个请求。我不确定是否有超时,但有几个选项可以使用。

我不确定“jquery超时”是什么意思。如果你是说设置超时,那肯定不行。如果你是说,另一方面

$.ajax({
     url:"myserverprocess", 
     timeout: 200, 
     error: function () { /* try again */ }, 
     success: function (myadata) { alert("mydata")}
});
那就行了。如果还没有,请尝试超时选项

编辑: 你可以试试:

$(selector).tabs({
    ajaxOptions: {
        url:"myserverprocess", 
        timeout: 200, 
        error: function () { /* try again */ }, 
        success: function (myadata) { alert("mydata")}
    }
});

您可以使用Jquery设置ajax调用的超时,然后在错误部分捕获它。一旦被抓到,你可以重新尝试或做任何需要的清理工作。

我们这里有一个类似的情况,第一个到达现场的人在装载物品时会延迟15秒

在我们的情况下,对于通过jQuery对服务器的所有调用,我已经设置了一个正常的javascript超时2秒。2秒钟后,我弹出一个小div,说一些事情比预期的要长,请耐心等待

又过了6秒钟,我关闭了那个div,打开了一个新的div,并表示了更多的歉意

这不是一个很好的解决方案,但它确实让用户处于循环中,让人感到舒适的是,事情进展顺利,我们承认事情并不完美


这里我们称之为温暖和模糊。:)

我就是这么用的。我有$.ajaxSetup({'timeout':15000,'error':errorCallback});我认为这有能力杀死除jQueryUITab请求之外的所有请求。我也尝试在tabs-one中这样做。但根据文档,ajaxSetup中的一个将无论如何覆盖它。您的代码中可能存在打字错误或其他相关错误。如果你发一些,也许我们可以诊断。要做的一件事是制作一个真正精简的最小页面来演示这个bug,并将它放在jsbin上供我们查看和使用。不知道如何清理它,所以我必须重写我的ajax内容吗?我怎么能把它放到jqueryui选项卡上呢。我相信,您只是将其设置为一个链接,并在内部执行。只需添加几行代码(而不是重写),但前提是您当前可以访问ajax代码。我不想更改jquery ui代码。因为如果我升级,那么它将被覆盖。那么我如何添加这几行呢?就像我大部分时间都在使用“post”和“get”一样。一旦你创建了队列,你只需添加到队列中即可。添加({url:/whateverurl”,类型:“POST”,数据:{myVar:myData,…},中止:函数(){abortMe();},成功:函数(数据){…},错误:函数(数据){handleErrors(数据);});你能在jsbin.com上举一个这个问题的例子吗?只是对你的标题做出反应:我有一些我想这样做的用户。这不是一个解决办法,但总比什么都没有好。如果没有人能给我更好的东西,我会转向这个解决方案。就像你说的,这不是一个解决方案,但有时你会意识到滞后,你会意识到你对此无能为力。但让客户坐在那里等待是失去他们的最快方式。至少如果你提供反馈,你可以推迟他们的离开,并希望保留他们直到系统恢复。显然,还有其他方法可以处理完全挂起,但这不是其中之一。