我刚刚实现了一个调用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,
进行测试,但我可能会使用上面更清晰的解决方案作为永久修复。