Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
在大数据集上使用Jquery/ajax/jasonresult时是否有超时?_Jquery_Json - Fatal编程技术网

在大数据集上使用Jquery/ajax/jasonresult时是否有超时?

在大数据集上使用Jquery/ajax/jasonresult时是否有超时?,jquery,json,Jquery,Json,***更新信息 我现在不认为这是一个超时问题。但是,我们确实看到了创建服务器错误(“500”)的情况。我已经用各种数据集进行了测试,一旦大小超过某个阈值,就会调用ajaxError函数。服务器查询数据库中的数据行,并将其转换为XML字符串。db有一组表,这些表创建递归构造的xml字符串。父表有2300行,子表大约有20000行,因此字符串相当大。但是,如果我使用这样的代码,该函数可以正常工作: <form id="theTax" method="post" action="Proc

***更新信息

我现在不认为这是一个超时问题。但是,我们确实看到了创建服务器错误(“500”)的情况。我已经用各种数据集进行了测试,一旦大小超过某个阈值,就会调用ajaxError函数。服务器查询数据库中的数据行,并将其转换为XML字符串。db有一组表,这些表创建递归构造的xml字符串。父表有2300行,子表大约有20000行,因此字符串相当大。但是,如果我使用这样的代码,该函数可以正常工作:

    <form id="theTax" method="post" action="ProcessTax" >
@{
    TaxonomyHelper th = new TaxonomyHelper(1);
    @Html.Raw(th.TaxonomyDivTag.ToString())        
 }
</form>

@{
TaxonomyHelper th=新分类帮助者(1);
@Html.Raw(th.TaxonomyDivTag.ToString())
}
因此,在这种情况下,返回了大量的数据,虽然渲染(在客户机上递归完成)需要一分钟的时间,但它仍然可以工作。我的目标是根据用户的需要利用ajax和分而治之(始终是这个完整数据集的重要子集)。我唯一好奇的是,当我使用ajax、jquery和json做同样的事情时,为什么会出现这个服务器错误?更重要的是,在要求数据集太大而无法成功之前,我是否应该检查一些限制

所以在今天的测试中,当我将集合细分为更小的限制时,我不会得到错误。它总是起作用或不起作用——就好像它测量了服务器所说的话,当达到这个大小限制时,它会说“不”。我尝试过延迟、设置断点和其他愚蠢的措施——我尝试过通过调整linq2sql查询以各种形式分割2级xml节点。。。不管怎样,它总是起作用或总是不起作用

所以现在的问题是:有人知道对“getJSON”调用的服务器调用返回的内容有总数据大小限制吗?这似乎是真的,因为成功与失败的相对大小似乎非常接近。我需要添加一些代码来测量大小,但如果有人知道这一点,速度会更快:)

再次感谢您的帮助,但我现在相信这可能很有价值,而不是让我学习jquery、ajax以及如何拼写json的新知识;)


下面的代码片段是MVC3应用程序的一部分。URL返回的JasonResult(一个名为“GetJson”的函数)返回显示在div标记中的html。名为“GetJason”的JasonResult函数返回的字符数非常少,大约为10K。“Getjasonal”是一个相当大的字符数-远远超过10万个。它们都是大型分类法的呈现

我试图找到为什么JasonResult的较小版本工作正常,而另一个版本无法显示数据的原因。在使用jQueryAjax特性时,我尝试了异步、同步和其他一些想法,但都没有用。它看起来好像超时了。但我知道该函数正在从JasonResult控制器函数返回数据。但它似乎在那里消失了——就好像浏览器在说“继续前进”之前会等很长时间。我已经浏览了jQueryJS,但似乎无法找出结果在哪里无效

感谢您的帮助。请注意,如果我使用ActionResult并下拉较大的数据集,那么我对页面没有任何问题。这需要很长时间,我的策略是分而治之,因为我逐步打开一个依赖于用户输入的递归列表。很明显,我可以不带阿贾克斯往返,但那会不那么吸引人,我希望我错过了一些东西

另一个可能有用的信息是:如果我在“processJSON”函数中放置一个“debugger”断点,那么小的一组显然会命中它,而大的一组则不会。如果存在超时问题,这是有意义的。无论哪种情况,都可以立即单击启动脚本的按钮。也就是说,没有锁等

  • 谢谢你的反馈

脚本代码:

<script type="text/javascript">
$(document).ready(function () {

    $.ajaxSetup({ 'async': false });
    $('#someButton').click(function () {
        $.get('GetJson', function (data) {
            processJSON(data);
        });
    });

    function processJSON(data) {
        var output = data;
        $('#SomeDiv').html(output);
    }
});

$(文档).ready(函数(){
$.ajaxSetup({'async':false});
$('#someButton')。单击(函数(){
$.get('GetJson',函数(数据){
processJSON(数据);
});
});
函数processJSON(数据){
var输出=数据;
$('#SomeDiv').html(输出);
}
});

两个.NET控制器功能:

        public JsonResult GetJson()
    {            
        JsonResult js = new JsonResult();
        TaxonomyHelper th = new TaxonomyHelper(1);
        js.Data =   "<script src='taxonomyRenderer.js' type='text/javascript'></script>" +
                    "<link href='taxonomyStyle.css' rel='stylesheet' type='text/css' />" +         
        th.TaxonomyDivTag.ToString();
        js.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
        return js;
    }

    public JsonResult GetJsonAll()
    {
        JsonResult js = new JsonResult();
        TaxonomyHelper th = new TaxonomyHelper();
        js.Data = "<script src='taxonomyRenderer.js' type='text/javascript'></script>" +
                    "<link href='taxonomyStyle.css' rel='stylesheet' type='text/css' />" +
            th.TaxonomyDivTag.ToString();
        js.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
        return js;
    }
publicjsonresult GetJson()
{            
JsonResult js=新的JsonResult();
TaxonomyHelper th=新分类帮助者(1);
js.Data=“”+
"" +         
th.TaxonomyDivTag.ToString();
js.JsonRequestBehavior=JsonRequestBehavior.AllowGet;
返回js;
}
public JsonResult GetJsonAll()
{
JsonResult js=新的JsonResult();
TaxonomyHelper th=新的TaxonomyHelper();
js.Data=“”+
"" +
th.TaxonomyDivTag.ToString();
js.JsonRequestBehavior=JsonRequestBehavior.AllowGet;
返回js;
}
没有
$.get()
超时。查看哪些默认值为0

您可能会得到一个错误响应,但除非您将某些内容附加到错误处理程序,否则它会自动失败。请参见描述如何连接错误处理程序。jQuery善于隐藏错误以方便最终用户,而不利于开发人员


如果您知道返回的是JSON,那么还应该使用。

使用JQuery中的低级ajax接口,而不是简写方法
:-

超时次数
为请求设置超时(以毫秒为单位)。这将覆盖使用$.ajaxSetup()设置的任何全局超时。超时时间从$.ajax调用开始;如果有多个其他请求正在进行,而浏览器没有可用的连接,则在发送请求之前,请求可能会超时。在jQuery 1.4.x及以下版本中,如果请求超时,XMLHttpRequest对象将处于无效状态