Php 显示来自Laravel的Ajax响应的返回消息
我有一个工作表单,它使用Laravel Collective从一个HTML表单提交到一个数据库,并提交到我的控制器,它工作得很好 我想在不重新加载页面的情况下提交它,所以我使用AJAX提交数据 我已经让它工作了,它正在向数据库写入数据,但我无法让控制器将响应返回到success页面 以下是我的脚本: 脚本: HTML: 我不能锻炼我缺少的东西 我正在学习AJAX,如果我说实话,我正在学习所有的AJAX!,但是正如我所说的,它正在成功地写入数据库,只需要通知用户它。脚本 HTML 将submit按钮的类型从submit更改为buttonPhp 显示来自Laravel的Ajax响应的返回消息,php,ajax,laravel,laravel-5,Php,Ajax,Laravel,Laravel 5,我有一个工作表单,它使用Laravel Collective从一个HTML表单提交到一个数据库,并提交到我的控制器,它工作得很好 我想在不重新加载页面的情况下提交它,所以我使用AJAX提交数据 我已经让它工作了,它正在向数据库写入数据,但我无法让控制器将响应返回到success页面 以下是我的脚本: 脚本: HTML: 我不能锻炼我缺少的东西 我正在学习AJAX,如果我说实话,我正在学习所有的AJAX!,但是正如我所说的,它正在成功地写入数据库,只需要通知用户它。脚本 HTML 将submit按
<div class="row">
<div class="col">
<p class="alert alert-success" id="msg"></p>
</div>
</div>
<div class="row">
<div class="col">
<!-- Start Form -->
<input type="hidden" name="csrf" value="{{csrf_token()}}" id="token">
<div class="form-group">
<label for="recipeName">Recipe name:</label>
<input type="text" class="form-control" id="recipeName" aria-describedby="emailHelp" placeholder="Enter recipe name">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="recipeDescription">Recipe Description:</label>
<textarea class="form-control" id="recipeDescription" rows="3" placeholder="Enter a recipe description"></textarea>
</div>
<button type="button" class="btn btn-primary btn-block btn-lg" id="submit">Submit</button>
<!-- End Form -->
在控制器中更改以下各项可以正常工作
...
$recipe->save();
$data = [
'success' => true,
'message'=> 'Your AJAX processed correctly'
] ;
return response()->json($data);
成功:functiondata{console.logdata-它是否返回任何内容?成功块是否正在运行?msg div是否可见?隐藏?将默认内容放入其中是否可以看到?不要淡出,成功后是否可以找到它?其中是否包含消息?向成功添加console.logdata我收到一个500服务器错误。非常好,因此它是服务器端/php/laravel问题,尝试隔离。1可能性,我认为对于ajax json请求,您只需从控制器返回一个数据数组,laravel将自动转换为json供您使用。感谢您的帮助。看起来我返回的响应不正确。如上所述,即使有上述更改,也会出现500个错误。我正在等待您的响应我在上面发布了一个解决方案。看起来我使用的教程返回的响应不正确。以下操作有效:return response->json$data;。感谢您的帮助。
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|max:255',
'description' => 'required'
]);
$recipe = new Recipe;
$recipe->name = $request->name;
$recipe->description = $request->description;
$recipe->user_id = auth()->user()->id;
$recipe->save();
return Response::json(array(
'success' => true,
'data' => $data
));
}
$("#submit").click(function() {
$("#msg").show();
var name = $("#recipeName").val();
var description = $("#recipeDescription").val();
$.ajax({
type: "post",
data: {name:name,description:description,'_token':'{{csrf_token()}}'},
dataType:'json',
url: "{{ route('recipes.store') }}",
success:function(data){
$("#msg").html("Recipe Saved");
$("#msg").fadeOut(2000);
}
});
});
<div class="row">
<div class="col">
<p class="alert alert-success" id="msg"></p>
</div>
</div>
<div class="row">
<div class="col">
<!-- Start Form -->
<input type="hidden" name="csrf" value="{{csrf_token()}}" id="token">
<div class="form-group">
<label for="recipeName">Recipe name:</label>
<input type="text" class="form-control" id="recipeName" aria-describedby="emailHelp" placeholder="Enter recipe name">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="recipeDescription">Recipe Description:</label>
<textarea class="form-control" id="recipeDescription" rows="3" placeholder="Enter a recipe description"></textarea>
</div>
<button type="button" class="btn btn-primary btn-block btn-lg" id="submit">Submit</button>
<!-- End Form -->
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|max:255',
'description' => 'required'
]);
$data = 'some data';
$recipe = new Recipe;
$recipe->name = $request->name;
$recipe->description = $request->description;
$recipe->user_id = auth()->user()->id;
$recipe->save();
return Response::json(array(
'success' => true,
'data' => $data
));
}
...
$recipe->save();
$data = [
'success' => true,
'message'=> 'Your AJAX processed correctly'
] ;
return response()->json($data);