JQuery AJAX POST调用需要很长时间

JQuery AJAX POST调用需要很长时间,jquery,ajax,post,Jquery,Ajax,Post,我提出了一个巨大的数据请求后,但发送请求需要很长时间。我说只发送是因为我有以下代码: console.time('post load'); var req= new Array; req = { 'data' : $('input[name="data"]', $('#id_contain')) .serialize() }; var request = $.ajax({

我提出了一个巨大的数据请求后,但发送请求需要很长时间。我说只发送是因为我有以下代码:

 console.time('post load');
var req= new Array;
                req = { 
                     'data' :   $('input[name="data"]', $('#id_contain')) .serialize()
                };

var request = $.ajax({
                                    url : '/url',
                                    type : "POST",
                                     data : req,
                                    cache : false,
                timeout: 10000,
                                    dataType : 'json',
                                    async:   false,
                                    success : function(response){
                               alert('yes');
                }, 
                                    error : function(jqXHR, textStatus,
                                            errorThrown) {
                                    //  if (debug_js) {
                                            console.log(jqXHR);
                                //      }
                                    }
                                });
               console.timeEnd('post load');
  console.log('data');
因此,根据这段代码,我的请求(后加载)需要25秒,我的JAX请求超时10秒。所以我认为只有jquery让请求花费时间?
但是,如果我用一个简单的字符串来更改数据,则需要0.01秒。。。所以这真的是由于我的巨大数据吗?

正如Niels提到的,这可能是后端(服务器端)的问题。我建议您首先尝试注释服务器端的任何处理逻辑,并立即返回成功条件。 如果请求仍然需要很长时间,那么它肯定是巨大的数据,这是罪魁祸首,你可能不得不考虑某种客户端数据压缩。
对此,我们对各种选项进行了一些分析。

也有同样的问题。在一个用例中,我必须发送3个JSON对象,总共约20MB;虽然只发送到localhost,但需要大约20秒,或者浏览器超时(Firefox、Chrome)

经过多次尝试和出错(也尝试注释所有服务器逻辑,但没有加快过程),我终于找到了一个解决方案:

  • 字符串化JSON数据:JSON.Stringify(req)
  • 将contentType:“application/json”添加到ajax请求中
  • 在服务器端,添加从http post读取json内容的逻辑
  • 三。步骤取决于您正在运行的服务器类型。对我来说,它是一个NodeExpress服务器,带有json内容的主体解析器模块


    在这些更改之后,jquery的http post创建从20秒下降到1秒以下。

    您可能是如何处理后端数据的?你是怎么做到的?你的数据有多大?多少字节?@pete不知道有多少字节,但它就像一个包含2401727个字符的字符串。@Niels如果是php,我想ajax jquery的timout将被触发,如果我在回调php开始时返回,则是相同的。当使用异步时,我处理$\u post:false javascript执行将停止,直到您的post返回,