2016-05-05 21 views
3

私はフロントエンドでAngularJSを、バックエンドにLaravel PHPフレームワークを使用しているWebサイトを開発しています。

私は、$ http.postコールをlaravelバックエンドに送信している1つのシンプルなフォームがあり、データが処理され、電子メールが送信されます。

すべてがローカルのApacheサーバーで正常に動作しますが、ウェブホスティングサーバーのオンラインでは、開発者コンソール(下のスクリーンショットを参照)で502(不良ゲートウェイエラー)が返されます。

スクリーンショット:http://s32.postimg.org/bwnxyps1x/502.jpg

そしてまだ、このエラーが表示されたら、バックエンドでのスクリプトが実行され、電子メールがsendedではれます。それは本当に奇妙です。私は呼んで$ http.postを送信している簡単な工場を持ってAngularJSで

...

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; 

最後に、これはラベリングコントローラの単純な方法です。

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は、サーバーが何かを正しく完了できなかったことを示します。だから、それは電子メールを送信しているかもしれませんが、恐らくDBを更新するようなスクリプトの後に何かしようとします。あなたのローカルが正常に動作し、リモートが部分的に動作しているので、これはいくつかのサーバーの問題につながります。なぜこのサーバーにログがあり、502が発行されたのかを教えてくれるでしょうか?おそらく電子メールプログラムは、電子メールを送信しようとした後にこれを返しますか?

0

バックエンドが角度アプリに何も送っていないようです。 OK(200など)のHTTPステータスで応答する必要があります。

-1

大丈夫です。私はウェブホスティングプロバイダに連絡してhtaccessでOPcacheを無効にしていますが、現在は動作しています... :)

関連する問題