【问题标题】:JQuery AJAX POST call take long timeJQuery AJAX POST 调用需要很长时间
【发布时间】:2014-09-09 16:11:53
【问题描述】:

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

 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 秒,而我的 onajax 请求超时 10 秒。所以我认为这只是 jquery 发出请求需要时间吗? 但是,如果我用一个简单的字符串更改数据巨大的数据,它需要大约 0.01 秒......所以这真的是由于我的庞大数据吗?

【问题讨论】:

  • 大概是你如何处理后端的数据?你是怎么做到的?
  • 您的数据有多大?多少字节?
  • @pete 不知道有多少字节,但它就像一个包含 2401727 个字符的字符串。
  • @Niels 如果它是 php,我认为 ajax jquery 的 timout 将被触发,如果我在回调 php 开始时返回它是一样的。我处理 $_POST
  • 当使用 async: false javascript 执行将停止,直到您的帖子返回,

标签: jquery ajax post


【解决方案1】:

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

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

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

第 3 步取决于您运行的服务器类型。对我来说,它是一个 node express 服务器,带有用于 json-content 的 body-parser 模块。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      相关资源
      最近更新 更多