AngularJS$http.post调用返回502(坏网关)错误


AngularJS $http.post call returning 502 (bad gateway) error

我正在开发网站,在前端使用AngularJS,在后端使用Laravel-php框架。

我有一个简单的表单,它将$http.post调用发送到laravel后端,然后处理数据并发送电子邮件。

在我的本地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的专家,我真的被这个错误弄糊涂了。你有什么建议吗?原因是什么?

非常感谢!感谢所有提示。

502表示服务器无法正确完成某些操作。因此,它发送了一封电子邮件,但可能会在脚本之后尝试一些事情,比如更新数据库。由于您的本地工作正常,远程工作部分正常,这归结为一些服务器问题,是否有可能在该服务器上有更多的日志记录,可以告诉我们发布502的原因。也许电子邮件程序在尝试发送电子邮件后会返回此消息?

后端似乎不会向您的angular应用程序发送任何信息。它应该以OK(例如200)HTTP状态进行响应。

好的。所以我已经联系了网络托管提供商,他们关闭了htaccess中的OPcache,现在它正在工作…:)