共享主机上的服务器在我的机器上工作正常时,在开机自检请求上返回 500 服务器错误



我刚刚实现了一个调用POST方法的AJAX请求,并将其添加到循环中以具有多个响应。它在本地主机上的机器上运行良好,但是当我在Bluehost共享主机上托管它时,某些请求具有OK响应(200(,而其他请求使用PHP 7.2具有(500(服务器错误。

这是我的观点.php

 for(var i = 0; i < 10 ; i++){
   $.ajax({
     url:'/download',
     method: 'POST',
     data: formData,
     success:function(data){
        if(data['status'] == '0') {alert('SUCCESS FOR ' + i);}
        else {alert('ERROR FOR ' + i);}
     }
   });
}

这是我的主控制器.php

function download(Request $request){
   //DO STUFF
   return response()->json(['status'=>'0']); //return '1' if success and '0' if failure
}

任何帮助将不胜感激?

我怀疑这是 ajax 调用的异步性质的问题。 本地主机的传输速度可能很快,因此数据一次移动一个。 在您的共享主机上,它可能需要更长的时间,从而搞砸某些东西。 这很可能是可变范围。 我看到你在回应中呼吁i。 该i可能不是您的方法所期望的。 没有更多信息很难说,但如果这是问题所在......

解决作用域问题的一个可能更好的方法是为每个 ajax 函数提供自己的变量i副本,以便我们始终知道每个 AJAX 调用过去和应该使用哪个i

这样的事情可能会有所帮助:

for (i = 0; i <= 10; i ++)
{
  $.ajax(
  {
     method: 'POST',
     url:'/download',
     loopI: i, // Capture the current value of 'i'.
     success: function(data)
     {
        i = this.loopI; // your specific scoped i
      // ETC

您也可以在ajax中使用简单的:async: false,进行测试,但我可能会使用上面更清晰的解决方案作为永久修复。

最新更新