JQuery AJAX POST 调用需要很长时间

Tho*_*usa 6 ajax jquery post

我使用大量数据发出请求 POST,但请求的 SEND 需要很长时间。我说只发送因为我有这个代码:

 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');
Run Code Online (Sandbox Code Playgroud)

所以根据这段代码,我的请求(后加载)需要 25 秒,我有 10 秒的超时 onajax 请求。所以我认为这只是 jquery 发出请求需要时间?但是如果我用一个简单的字符串更改数据大数据需要0.01秒......所以这真的是由于我的大数据吗?

Rec*_*cek 7

有完全相同的问题。在一个用例中,我必须发送 3 个 JSON 对象,总共约 20MB;虽然只发送到本地主机花了大约 20 秒或浏览器超时(Firefox,Chrome)。

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

  1. 将您的 JSON 数据字符串化: JSON.stringify(req);
  2. 将 contentType: 'application/json' 添加到您的 ajax 请求
  3. 在服务器端添加逻辑以从 http-post 中读取 json 内容

3. 步骤取决于您正在运行的服务器类型。对我来说,它是一个节点快速服务器,带有用于 json 内容的 body-parser 模块。

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


Jos*_*tha 1

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