Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我不能在Laravel中使用ajax插入数据,我总是收到500个内部服务器错误,我不知道为什么?_Javascript_Jquery_Ajax_Laravel - Fatal编程技术网

Javascript 我不能在Laravel中使用ajax插入数据,我总是收到500个内部服务器错误,我不知道为什么?

Javascript 我不能在Laravel中使用ajax插入数据,我总是收到500个内部服务器错误,我不知道为什么?,javascript,jquery,ajax,laravel,Javascript,Jquery,Ajax,Laravel,我使用的是laravel和ajax,主页上有一个联系人表单,我希望用户能够在不刷新页面的情况下提交此表单,但总是出现此内部服务器错误 我使用的是Laravel5.8和jquery,我尝试过使用其他jquery版本或是否包含csrf之类的解决方案,但都是一样的 在HomeController上插入函数 public function contactForm(Request $request) { $rules = [ 'email' => 'req

我使用的是laravel和ajax,主页上有一个联系人表单,我希望用户能够在不刷新页面的情况下提交此表单,但总是出现此内部服务器错误

我使用的是Laravel5.8和jquery,我尝试过使用其他jquery版本或是否包含csrf之类的解决方案,但都是一样的

在HomeController上插入函数


public function contactForm(Request $request) {

        $rules = [
            'email' => 'required|email|unique:users',
            'message' => 'required|string'
        ];

        $this->validate($request, $rules);

        if($request->fails()) {
            $failed_output = [];
            foreach ($request->getMessages()->messages() as $message) {
                $failed_output[] = $message;
            }
        }else {
            $data = $request->except('_token');
            DB::table('user_messages')->insert($data);

            $success_output = "<div class='alert alert-success'>We got your message, thank you.</div>";

        }
        $output = [
                'success' => $success_output,
                'error' => $failed_output,
            ];

        return response()->json([
            'success' => $success_output
        ], 200);
        // echo json_encode($output);
    }
html表单

<form id="contactForm" autocomplete="off" method="post" action="/">

                            <span id="form_output"></span>
                            <div class="form-group">
                                <input id="email" placeholder="Your email..." value="@auth {{ auth()->user()->email }} @endauth" type="email" name="email" class="form-control" required>
                                <p class="home-email-input js-error">Email is not valid</p>

                                @if($errors->has('email'))
                                    <div class="alert alert-danger">
                                        {{ $errors->first('email') }}
                                    </div>
                                @endif

                            </div>
                            <div class="form-group">
                                <textarea id="message" placeholder="Tell us why you like this website..." name="message" class="form-control" required></textarea>
                                <p class="home-message-input js-error">You message must be between 10 - 500 characters.</p>

                                @if($errors->has('message'))
                                    <div class="alert alert-danger">
                                        {{ $errors->first('message') }}
                                    </div>
                                @endif

                            </div>

                            <input type="submit" class="btn btn-primary float-right" value="Send">

                        </form>


电子邮件无效

@如果($errors->has('email')) {{$errors->first('email')} @恩迪夫

您的消息必须在10-500个字符之间

@如果($errors->has('message')) {{$errors->first('message')} @恩迪夫
javascript代码(ajax调用)

$.ajaxSetup({
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
}
});
$(“#联系人表单”)。提交(功能(evt){
evt.preventDefault();
let email=$(“#contactForm div#email”).val();
让msg=$(“#contactForm div#message”).val();
如果(电子邮件长度<10){
$(“#contactForm div p.home-email-input”).css(“显示”、“块”);
返回false;
}
如果(味精长度<10 | |味精长度>500){
$(“#contactForm div p.home-message-input”).css(“显示”、“块”);
返回false;
}
//通过Ajax插入
让form_data=$(this).serialize();
console.log(form_数据);
$.ajax({
方法:“POST”,
网址:“/”,
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
},
数据:表格数据,
数据类型:“json”,
成功:功能(数据){
如果(data.error.length>0){
让错误=”;
for(设i=0;i
我希望结果在输入上方显示一点成功消息,但我得到了以下错误:


POST 500(内部服务器错误)

照亮\Http\Request
没有
失败
方法,该方法将是调用
验证程序
实例的方法


在控制器中调用
$this->validate(…)
时,如果验证失败,将引发异常,之后在控制器中没有任何可检查的内容。如果在
$this->validate(…)
之后继续执行,则表示验证已通过。

500错误表示日志中的某个地方有错误的详细信息。谢谢我花了很多时间试图解决它谢谢
<form id="contactForm" autocomplete="off" method="post" action="/">

                            <span id="form_output"></span>
                            <div class="form-group">
                                <input id="email" placeholder="Your email..." value="@auth {{ auth()->user()->email }} @endauth" type="email" name="email" class="form-control" required>
                                <p class="home-email-input js-error">Email is not valid</p>

                                @if($errors->has('email'))
                                    <div class="alert alert-danger">
                                        {{ $errors->first('email') }}
                                    </div>
                                @endif

                            </div>
                            <div class="form-group">
                                <textarea id="message" placeholder="Tell us why you like this website..." name="message" class="form-control" required></textarea>
                                <p class="home-message-input js-error">You message must be between 10 - 500 characters.</p>

                                @if($errors->has('message'))
                                    <div class="alert alert-danger">
                                        {{ $errors->first('message') }}
                                    </div>
                                @endif

                            </div>

                            <input type="submit" class="btn btn-primary float-right" value="Send">

                        </form>

$.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    $("#contactForm").submit(function(evt) {

        evt.preventDefault();

        let email = $("#contactForm div #email").val();
        let msg = $("#contactForm div #message").val();

        if(email.length < 10) {
            $("#contactForm div p.home-email-input").css("display", "block");
            return false;
        }
        if(msg.length < 10 || msg.length > 500) {
            $("#contactForm div p.home-message-input").css("display", "block");
            return false;
        }

        // Insert By Ajax

        let form_data = $(this).serialize();
        console.log(form_data);
        $.ajax({
            method: 'POST',
            url: "/",
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            data: form_data,
            dataType: 'json',
            success: function(data) {
                if(data.error.length > 0) {
                    let errors = "";
                    for(let i = 0; i < data.error.length; i++) {
                        errors += "<div class='alert alert-danger'>"+data.error[i]+"</div>";
                    }
                    $("#form_output").html($errors);
                }else {

                    $("#form_output").html(data.success);
                    $("#contactForm")[0].reset();
                }
            },

        });

    });