服务器端的AJAX请求正文随机为空

时间:2019-05-24 12:55:16

标签: php jquery ajax

我有一个基于浏览器的客户端,该客户端对PHP / Apache后端进行AJAX调用。单击按钮时,客户端将遍历“提供商”列表,并向每个具有完全相同有效负载的Ajax请求发送。

随机地,循环中的某些请求以空白的POST正文到达服务器端。真正奇怪的是,同一循环中的其他请求已正确填充。有时,我们看到循环中的所有项目都带有一个空白的主体,有时还会看到其中的一些项目。真的很奇怪!

环境详细信息:

  

Client = JQuery 3.3.1,JQueryUI 1.12.1,Bootstrap 3.3.7,JQuery validate 1.19.0

     

服务器= Apache 2.4,PHP 7.1

我们实际上无法在开发环境中重现该问题,但是登录生产显然表明这是每天定期发生的(可能是请求的5%)。我们已经在客户端浏览器上部署了监视程序,以捕获任何错误,并且没有任何异常或看起来可能与之相关的事情。

以下示例显示了我们在客户端所做的事情。
1)将click事件绑定到
2)单击时,填充请求对象
3)遍历“提供者”列表,将请求从2发布到PHP服务器

$(document).ready(function() {
    bindEvents();
}

function bindEvents() {
    $("#myButton").click(function(event) {
        event.preventDefault();
        handleClick();
    });
}

function handleClick() {
    var request = ...;
    ...
    var save=false;
    if (....) {
        save=true;
    }
    var providers = ["provider1", "provider2", "provider3", "provider4", "provider5", "provider6"];
    var ndx;
    for (ndx=0; ndx<providers.length; ++ndx) {
        doRequestSend("action/"+(save?"save":"verify"), request, providers[ndx]);
    }
}

function doRequestSend(action, request, provider) {
    request['apiKey']=getAPIKey();
    var url=baseURL+"/api/"+provider+"/"+action;
    $.ajax({
        type: "POST",
        url: url,
        data: JSON.stringify(request),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data){
            ...
        },
        failure: function(errMsg) {
            ...
        },
        error : function(jqXHR, textStatus, errorThrown) {
            ...
        }
    });
}

很显然,当我无法复制时,很难找出问题所在。但是,希望有人可以发现可能导致问题的方法出现问题。

或者,对任何随机/疯狂的想法持开放态度,这些想法可以解释如何发生这种情况!循环中的某些请求可以正常执行,而其他请求则可以保持空白!

注意: -尽管每次迭代都将POST循环循环到一个略有不同的url,但在服务器端,它们都结束于相同的入口点,并且要做的第一件事是记录正文(这就是我们知道它为空白的方式) !) -(迄今为止)似乎唯一遇到此问题的浏览器是Windows上的Chrome 73和74。这可能不相关!

有人想出任何想法或尝试来寻找源头吗? 干杯!

0 个答案:

没有答案