我刚刚实现了一个调用POST方法的AJAX请求,并将其添加到循环中以具有多个响应。在我的本地主机上的机器上,它运行良好,但是当我将其托管在Bluehost共享主机上时,使用PHP 7.2时,某些请求的响应正常(200),而其他服务器的错误(500)。
这是我的view.blade.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);}
}
});
}
这是我的MainController.php
function download(Request $request){
//DO STUFF
return response()->json(['status'=>'0']); //return '1' if success and '0' if failure
}
任何帮助将不胜感激吗?
答案 0 :(得分:0)
我怀疑这与ajax调用的异步性质有关。 Localhost可能传输速度很快,因此数据一次只能移动一个。在您的共享主机上,可能需要花费更长的时间,从而弄乱了某些东西。很有可能是可变范围。我们看到您在响应中要求i
。 i
可能不是您的方法所期望的。没有更多信息很难说,但是如果这就是问题...:
解决范围问题的一种可能更好的方法是为每个ajax函数提供其自己的变量i
的副本,因此我们始终知道以前的i
应该是并且应该用于每个AJAX调用。
类似的事情可能会有所帮助:
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,
进行测试,但是我可能会使用上面更清晰的解决方案作为永久解决方案。