Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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
Javascript 为什么AJAX这么长?_Javascript_Php_Jquery_Ajax_Post - Fatal编程技术网

Javascript 为什么AJAX这么长?

Javascript 为什么AJAX这么长?,javascript,php,jquery,ajax,post,Javascript,Php,Jquery,Ajax,Post,大家好,我正在尝试编译一些表单并将其发送到php文件,但我注意到它非常慢,即使在php中我只转储POST值,如果使用正确的函数运行,也需要相同的时间。 也许代码错了,这就是我要做的: $("#button").click(function(){ $("#button").css("border","2px solid blue"); var total_forms = $("input[name=total_forms]").val(); $.a

大家好,我正在尝试编译一些表单并将其发送到php文件,但我注意到它非常慢,即使在php中我只转储POST值,如果使用正确的函数运行,也需要相同的时间。 也许代码错了,这就是我要做的:

$("#button").click(function(){
        $("#button").css("border","2px solid blue");
        var total_forms = $("input[name=total_forms]").val();
         $.ajax( {
        type: "POST",
        url: "<? echo "myurl.php";?>",
        data: {delete : 1}, //before sending my forms i need to run another function that delete some items in mySQL DB
        success: function(data) {
        for(var i = 0; i < total_forms; i++){
            var string_ok = "#form_number_";
            string_ok = string_ok.concat(i);
            var dataString = $(string_ok).serialize();
             $.ajax( {
        type: "POST",
        url: "echo "myUrl.php;"",
        data: dataString,
        success: function(data) {
            console.log(data); //it's a bit faster, only a bit
            $("#mydiv").append(data); //it's a bit slower
        }
            });
        }
        }
            });
    });
我注意到,如果我输入console.log(dataString),控制台会首先标记所有dataString日志,然后开始打印每个php响应。

  • 您是否在本地发送数据?比如你的php服务器是在本地运行还是托管在某个地方
  • 表格上有多少数据
  • 您的代码还在for循环中发送ajax请求。因此,在循环的每一次迭代中都有一个嵌套的ajax调用。这当然会更慢,有没有办法将其重构为一个ajax请求?基本上,您需要发出一个ajax请求,等待响应返回,进行循环,然后在每次迭代时发送另一个请求。看起来有点复杂

大约35inputs type hidden和4/5复选框@JaromandaXi还注意到,当查询运行(第一个ajax调用)需要很长时间时,第二个ajax调用在100个表单之后崩溃,并继续控制台。log()nothing@JaromandaXLet us。您提交了500个表单?通过您的示例告诉我们,您向服务器发送了大约250MB的有效负载,请求头可能会再发送100MB。如果这是每个用户和发送的数据量,那么您应该使用CDN或云服务来处理负载。我怀疑单台服务器(即使是大型商用服务器)能否处理这种负载。您的常规apache一次可以/确实处理大约100个打开的连接。您的每个用户只需单击一下即可创建500个通信,并阻塞整个服务器4分钟(根据您的说法)。是的,我使用的是localhost。我不知道如何检查表单上有多少数据,我想得不多,因为只有不太大的字符串,我这样做是因为我希望每个更新的数据都有一个动态响应,所以我更新了“100个项目中的项目1”“项目2…”等等..我更新了我的答案,并提供了更多细节@Ryan
prd_number=1259&prd_max_number=1763&old_prd_id=0&prd_action=true&title=INFORMAT%20G1X85A%23A80&title_check=true&old_title_text=&new_image_url=&old_image_url=&is_mech=&image_check=true&new_cat=Informatica%2CINFORMAT&category=true&new_price_text=222.04&price=true&new_sku_text=888182658918&oth=true&ncw=negat&stwe=testing&mark_text=INFORMAT_G1X85A%23A80&check_two=true&other_sto=table&var2=true&elemt=&weight=true&qt=3&qslow=true&clients=Norman%2Cli&taking=true&setting=normal&vars_set=true