Сервер на общедоступном хостинге возвращает 500 Ошибка сервера при запросе POST, пока он нормально работает на моем компьютере - PullRequest
0 голосов
/ 12 февраля 2019

Я только что реализовал запрос AJAX, вызывающий метод POST, и добавил его в цикл для получения нескольких ответов.На моем компьютере он работает нормально на локальном хосте, но когда я размещал его на общем хостинге Bluehost, некоторые запросы имели ответ OK (200), а другие (500) Ошибка сервера при использовании PHP 7.2.

Это мой 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
}

Любая помощь будет оценена?

1 Ответ

0 голосов
/ 12 февраля 2019

Я подозреваю, что это проблема асинхронного характера вызовов 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

Вы также можете протестировать с помощью простого: async: false, в вашем ajax, но я мог бы использовать более ясное решение, приведенное выше, в качестве постоянного исправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...