当前位置: 首页 > 知识库问答 >
问题:

如何修复Laravel5.8Ajax表单提交中的内部服务器错误

方英耀
2023-03-14

我正在使用Ajax处理Laravel中的表单提交,但它挂起了,检查console.log时我得到内部服务器错误500

我使用的是Laravel5.8,csrf令牌包含在meta名称中,也包含在ajax函数中,使用console.log,包括_token在内的所有值都出现在控制台中

这是表单控制器

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator,Redirect,Response;
use App\Contact;

class FormController extends Controller
{

    public function index()
    {
        return view('ajax-form');
    }       

    public function store(Request $request)
    {  
        request()->validate([
        'name' => 'required',
        'email' => 'required|email|unique:users',
        'mobile_number' => 'required|unique:users'
        ]);

        $data = $request->all();
        $check = Contact::insert($data);
        $arr = array('msg' => 'Something goes to wrong. Please try again lator', 'status' => false);
        if($check){ 
        $arr = array('msg' => 'Successfully submit form using ajax', 'status' => true);
        }
        return Response()->json($arr);

    }
}

这是我的刀片档案

<!doctype html>
<html lang="en">
  <head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="csrf-token" content="{{ csrf_token() }}">
  <title>Laravel 5.7 </title>
  <link rel="stylesheet" href="{{asset('css/bootstrap.min.css')}}" />
  <script src="{{ asset('js/jquery.js') }} "></script>  
  <script src="{{ asset('js/jquery.validate.js') }}"></script>  
  <script src="{{ asset('js/additional-methods.min.js') }}"></script>
  <style>
   .error{ color:red; } 
  </style>
</head>

<body>

<div class="container">
    <h2 style="margin-top: 10px;">Laravel 5.7 Ajax Form Submission Example - <a href="https://www.tutsmake.com" target="_blank">TutsMake</a></h2>
    <br>
    <br>

    {{-- <form id="contact_us" method="post" action="{{ route('name') }}"> --}}
    <form id="contact_us" method="post" action="javascript:void(0)">
      @csrf
      <div class="form-group">
        <label for="formGroupExampleInput">Name</label>
        <input type="text" name="name" class="form-control" id="formGroupExampleInput" placeholder="Please enter name">
        <span class="text-danger">{{ $errors->first('name') }}</span>
      </div>
      <div class="form-group">
        <label for="email">Email Id</label>
        <input type="text" name="email" class="form-control" id="email" placeholder="Please enter email id">
        <span class="text-danger">{{ $errors->first('email') }}</span>
      </div>      
      <div class="form-group">
        <label for="mobile_number">Mobile Number</label>
        <input type="text" name="mobile_number" class="form-control" id="mobile_number" placeholder="Please enter mobile number" maxlength="10">
        <span class="text-danger">{{ $errors->first('mobile_number') }}</span>
      </div>
      <div class="alert alert-success d-none" id="msg_div">
              <span id="res_message"></span>
      </div>
      <div class="form-group">
       <button type="submit" id="send_form" class="btn btn-success">Submit</button>
      </div>
    </form>

</div>
<script>
   if ($("#contact_us").length > 0) {
    $("#contact_us").validate({

    rules: {
      name: {
        required: true,
        maxlength: 50
      },

       mobile_number: {
            required: true,
            digits:true,
            minlength: 10,
            maxlength:12,
        },
        email: {
                required: true,
                maxlength: 50,
                email: true,
            },    
    },
    messages: {

      name: {
        required: "Please enter name",
        maxlength: "Your last name maxlength should be 50 characters long."
      },
      mobile_number: {
        required: "Please enter contact number",
        minlength: "The contact number should be 10 digits",
        digits: "Please enter only numbers",
        maxlength: "The contact number should be 12 digits",
      },
      email: {
          required: "Please enter valid email",
          email: "Please enter valid email",
          maxlength: "The email name should less than or equal to 50 characters",
        },

    },
    submitHandler: function(form) {
     $.ajaxSetup({
          headers: {
              'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          }
      });
      $('#send_form').html('Sending..');
      console.log($('#contact_us').serialize());
      $.ajax({
        url: "{{ url('save-form')}}",
        type: "POST",
        data: $('#contact_us').serialize(),
        success: function( response ) {
            $('#send_form').html('Submit');
            $('#res_message').show();
            $('#res_message').html(response.msg);
            $('#msg_div').removeClass('d-none');

            document.getElementById("contact_us").reset(); 
            setTimeout(function(){
            $('#res_message').hide();
            $('#msg_div').hide();
            },1000);
        }
      });
    }
  })
}
</script>
</body>
</html>

我的路线

 Route::post('save-form', 'FormController@store');

我需要表格提交到数据库。

共有1个答案

吉玉宸
2023-03-14

这是什么使用验证器、重定向、响应;

使用laravel helper函数:响应()->JSON($ARR);或仅返回$ARR;

 类似资料:
  • 我试图通过ajax调用从表中获取数据。但我得到的响应是“500内部服务器错误” ajax调用的脚本如下 要在functions.php调用的方法如下 add_action('wp_ajax_nopriv_getsections'、'getsections');add_action(‘wp_ajax_getsections’、‘getSection’);

  • 我试图通过ajax调用从表中获取数据。但我得到的响应是“500内部服务器错误”。 ajax调用的脚本如下所示 方法中调用。PHP如下所示 add_action('wp_ajax_nopriv_getsections','getsections');add_action('wp_ajax_getsections','getsections');

  • 我使用的是flutter v1.7.8+hotfix.3。我正在创建新用户,并在firestore数据库上添加他们的详细信息。当我第一次添加用户时,它工作得很好。当我试图添加另一个新用户时,我得到以下错误,应用程序崩溃: E/CloudFireStoReplugin(11070):等待任务E/CloudFireStoReplugin(11070):java.util.concurrent.Time

  • 我使用create-react-app创建了一个react-app,当使用axios发送请求时,我的代理可以正常工作。 我想做的是“正常”表单提交(axios没有onsubmit函数)。我想这样做是因为我的节点。然后js服务器将重定向我(axios不会将用户/浏览器发送到重定向,只会跟踪请求,这是我不想要的) 当我的表单提交时,它只是进入我的开发服务器而不是我的节点服务器,我相信这是因为 开发服务

  • 今天在更新根文件夹中的play服务后,我面临以下问题。我不知道如何解决这个问题。 有人能帮我解决这个问题吗? 这个错误让人很恼火。我不知道冲突在哪里。顺便说一下,为什么它显示冲突,而没有版本是相互关联的。 错误: 库com.google.android.gms: play-services-metaming-base正在被[[15.0.0,15.0.0]、[15.0.2,15.0.2]]的其他库请

  • 我是新的角度6。我用spring boot开发了一个post服务,当我通过postman测试它时,它工作得很好,但当我用web浏览器测试它时,它给了我这个错误: HttpErrorResponse ;{headers:HttpHeaders,status:500,statusText:“ok”,URL:“http://localhost:8080/api/test/ordermiss”,ok:fa