2016-05-05 2 views
3

Я разрабатываю веб-сайты, где я использую AngularJS в интерфейсе и Laravel php framework в бэкэнд.

У меня есть одна простая форма, которая отправляет $ http.post вызов laravel backend и обрабатываются данные и отправляется по электронной почте.

Все работает нормально на моем локальном сервере Apache, но в Интернете на сервере веб-хостинга он возвращает 502 (ошибка шлюза) в консоли разработчика (см. Снимок экрана ниже).

Скриншот: http://s32.postimg.org/bwnxyps1x/502.jpg

И все же, когда появляется эта ошибка, скрипт в интерфейсе выполняется и электронная почта отослано. Это действительно странно.

В AngularJS У меня есть простой завод, который отправляет $ http.post позвонить ...

var sendForm = function sendForm($http) { 
return { 
    sendForm: function($scope) { 
     return $http({ 
      method: 'POST', 
      url: '/odeslat', 
      data: {titul: $scope.form.titul, jmeno: $scope.form.jmeno, prijmeni: $scope.form.prijmeni, email: $scope.form.email, 
       telefon: $scope.form.telefon, zprava: $scope.form.zprava, human: $scope.form.human} 
     }); 
    } 
} 
}; 

module.exports = sendForm; 

Это мой контроллер.

var formularCtrl = function formularCtrl($scope, sendForm) { 
$scope.form = {}; 
$scope.form.human = 'Jsem člověk.'; 
var odeslano = false; 

$scope.submitForm = function submitForm(isValid) { 
$scope.showErrorMessage = false; 
$scope.errorMessage = ""; 
if((isValid) && (!odeslano)) 
{ 
    sendForm.sendForm($scope).success(function(data){ 
     if (!data.success) { 
      // if not successful, bind errors to error variables 
      $scope.errorMessage = data.message; 
      $scope.showErrorMessage = true; 

     } else { 
      // if successful, bind success message to message 
      $scope.message = data.message; 
      $scope.showMessage = true; 
      odeslano = true; 
     } 
    }); 
} 
    else 
{ 
    $scope.showErrorMessage = true; 
    $scope.errorMessage = "Doplňte prosím všechny povinné údaje. "; 
} 

} 
}; 

module.exports = formularCtrl; 

И, наконец, это простой способ в контроллере laravel.

public function sendForm(Request $request) { 

    $v = Validator::make($request->all(), [ 
     'jmeno' => 'required' 
    ]); 


    if($v->passes()) { 

     $input = $request->all(); 

     $this->sendMessage($input); 

     return response()->json(['success' => true, 'message' => 'Formulář byl odeslán. Jakmile to bude možné, budete kontaktováni.']); 
    } 
    elseif($v->fails()) 
    { 
     $input = $request->all(); 
     return response()->json(['success' => false, 'message' => 'Musíte doplnit povinné údaje']); 
    } 
} 

    private function sendMessage($input) 
{ 
    Mail::send('emails.formular', $input, function($message) 
    { 
     $message->from(self::FROM, self::SUBJECT); 

     $message->to(self::TO); 

    }); 
} 

Я не эксперт по AngularJS, и я действительно смущен этой ошибкой. Есть ли у вас какие-либо предложения - что может быть причиной?

спасибо! Все советы приветствуются.

+0

Проверьте полный URL-адрес в сетевой вкладке с консоли разработчика и проверьте, является ли он правильным или нет. – Krunal

+0

Описание ошибки 502 http://www.checkupdown.com/status/E502.html – Krunal

ответ

1

502 указывает, что сервер не смог выполнить что-то должным образом. Поэтому он отправляет электронное письмо, но, возможно, он пытается что-то после этого скрипта, например, обновлять БД. Поскольку ваш локальный сервер работает нормально, а ваш пульт работает частично нормально, это сводится к некоторой проблеме сервера, возможно ли, что на этом сервере больше регистрации на сервере, что может рассказать нам, почему выдается 502. Возможно, программа электронной почты возвращает это после попытки отправить электронное письмо?

0

Похоже, что бэкэнд не отправляет ничего обратно в ваше угловое приложение. Он должен отвечать с использованием статуса OK (200, например) HTTP.

-1

Хорошо. Таким образом, я связался с провайдером веб-хостинга, и они отключили OPcache в htaccess, и теперь он работает ... :)