私はフロントエンドで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の専門家ではありません。私はこのエラーで本当に混乱しています。何が原因である可能性がありますか?
ありがとうございました!すべてのヒントは高く評価されます。
開発者コンソールから[ネットワーク]タブの完全なURLを確認し、適切かどうかを確認してください。 – Krunal
502エラーについての説明http://www.checkupdown.com/status/E502.html – Krunal