我有一个带消息会话flash的函数addProduct,我想使用ajax jQuery在laravel中显示会话flash的消息成功。
知道数据已保存到数据库而不显示Flash消息
查看:
<div class="col-md-12">
@if(Session::has('message'))
<p class="alert {{ Session::get('alert-class', 'alert-info') }}">{{ Session::get('message') }}</p>
@endif
@if(Session::has('alert-danger'))
<p class="alert {{ Session::get('alert-class', 'alert-danger') }}">{{ Session::get('alert-danger') }}</p>
@endif
</div>
<script>
$(document).ready(function() {
$(document).on('click', "#add", function() {
var codeProduct = $('#codeProduct').val();
$.ajax({
url: "addProduct",
method: 'POST',
data: {
codeProduct: codeProduct
},
success: function(data) {
}
});
}
});
</script>
控制器:
public function addProduct(Request $request){
$product = new Product();
$product->codeProduct = $request->codeProduct;
$product->save();
Session::flash('success','Product Suucess!');
return response()->json($product);
}
答案 0 :(得分:1)
您可以创建一个数组来保存要从JSON请求返回的数据。例如,您可以使用以下变量:
所以你的代码看起来像这样:
public function addProduct(Request $request){
$status = false
$message = "";
$product = new Product();
$product->codeProduct = $request->codeProduct;
if ($product->save()){
$status = true;
} else {
$message = "The product failed to load!";
}
return response()->json([
'status' => $status,
'message' => $message,
'data' => $product
]);
}
然后,从您的AJAX请求中,您可以从响应中获取数据以及成功状态和消息:
var codeProduct = $('#codeProduct').val();
$.ajax({
url: "addProduct",
method: 'POST',
data: {
codeProduct: codeProduct
},
success: function(data) {
var status = data.status;
var message = data.message;
var product = data.data;
}
});
}
答案 1 :(得分:0)
只需在此功能成功函数中发出成功消息
我在这里忘了控制器代码
if ($product->save()) {
return response()->json(['data' => $product, 'success' => true, 'message' => 'success'], 200);
} else {
return response()->json(['success' => false, 'message' => 'error'], 422);
}
首先,使用类messages
创建一个div,然后使用jquery
var messages = $('.messages');
现在创建一个名为successHtml
的变量并生成成功消息
var successHtml = '<div class="alert alert-success">'+
'<button type="button" class="close" data-dismiss="alert">×</button>'+
'<strong><i class="glyphicon glyphicon-ok-sign push-5-r"></</strong> '+ data.message +
'</div>';
现在将successHtml
消息放入messages
div
$(messages).html(successHtml);
所以你的代码应该是这样的
<div class="col-md-12">
@if(Session::has('message'))
<p class="alert {{ Session::get('alert-class', 'alert-info') }}">{{ Session::get('message') }}</p>
@endif
@if(Session::has('alert-danger'))
<p class="alert {{ Session::get('alert-class', 'alert-danger') }}">{{ Session::get('alert-danger') }}</p>
@endif
<div class="messages"></div>
</div>
<script>
$(document).ready(function() {
$(document).on('click', "#add", function() {
var codeProduct = $('#codeProduct').val();
$.ajax({
url: "addProduct",
method: 'POST',
data: {
codeProduct: codeProduct
},
success: function(data) {
var messages = $('.messages');
var successHtml = '<div class="alert alert-success">'+
'<button type="button" class="close" data-dismiss="alert">×</button>'+
'<strong><i class="glyphicon glyphicon-ok-sign push-5-r"></</strong> '+ data.message +
'</div>';
$(messages).html(successHtml);
}
});
}
});
</script>