JQuery AJAX POST调用需要很长时间

时间:2013-04-25 16:19:48

标签: jquery ajax 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');

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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

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

答案 1 :(得分:1)

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