Javascript 我不能在Laravel中使用ajax插入数据,我总是收到500个内部服务器错误,我不知道为什么?
我使用的是laravel和ajax,主页上有一个联系人表单,我希望用户能够在不刷新页面的情况下提交此表单,但总是出现此内部服务器错误 我使用的是Laravel5.8和jquery,我尝试过使用其他jquery版本或是否包含csrf之类的解决方案,但都是一样的 在HomeController上插入函数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
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();
}
},
});
});