【发布时间】:2021-03-02 23:14:24
【问题描述】:
我想问。如何在 Laravel 中使用 Jquery 在刀片中为我的添加/删除输入字段动态显示成功和错误消息。一切似乎都很好,因为数据保存在数据库中,但没有出现成功消息的消息。它仅显示为 JSON。我的第二个问题,数据提交后如何刷新页面。
我的控制器:
public function addtrainee(Request $request)
{
$data = [];
$count = $request ->input('counting');
$x = 1;
while($x<=$count){
$this->validate($request, [
'name'.$x => 'required',
'category'.$x => 'required',
]);
$x++;
}
$validator = Validator::make($request->all(), $data);
if ($validator->passes()) {
$x=1;
while($x<=$count){
echo $request->input('name'.$x)."<br>";
echo $request->input('category'.$x)."<br>";
$trainees = new Trainee([
'name' => $request->get('name'.$x),
'category' => $request->get('category'.$x),
]);
$trainees->save();
$x++;
}
return response()->json(['success'=>'true']);
}
return response()->json(['error'=>$validator->errors()->all()]);
}
我的刀片:
<form name="add_name" id="add_name">
{{csrf_field()}}
<div class="alert alert-danger show-error-message" style="display:none">
<ul></ul>
</div>
<div class="alert alert-success show-success-message" style="display:none">
<ul></ul>
</div>
<input type="hidden" name="counting" class="form-control name_list" / id="counting" value="1">
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr>
<td><input type="text" name="name1" placeholder="Enter Name" class="form-control name_list" / id="name"></td>
<td>
<select class="form-control category" id="category" name="category1">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</td>
<td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td>
</tr>
</table>
<input type="button" name="submit" id="submit" class="btn btn-primary" value="Save" />
</div>
</form>
<script type="text/javascript">
$(document).ready(function(){
var url = "{{ url('addtrainee') }}";
var i=$("#counting").val();
$('#add').click(function(){
var name = $("#name").val();
var category = $("#category").val();
i++;
var counting = $("#counting").val(i);
$('#dynamic_field').append(
'<tr id="row'+i+'" class="dynamic-added">'
+'<td><input type="text" name="name'+i+'" placeholder="Enter name" class="form-control name_list" /></td>'
+'<td><select class="form-control category" name="category'+i+'"><option value="Male">Male</option><option value="Female">Female</option></select></td>'
+'<td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
});
$(document).on('click', '.btn_remove', function(){
i--;
var counting = $("#counting").val(i);
var button_id = $(this).attr("id");
$('#row'+button_id+'').remove();
});
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('#submit').click(function(){
$.ajax({
url:"{{ url('addtrainee') }}",
method:"POST",
data:$('#add_name').serialize(),
type:'json',
success:function(data)
{
if(data.error)
{
display_error_messages(data.error);
}else
{
i=1;
$('.dynamic-added').remove();
$('#add_name')[0].reset();
$(".show-success-message").find("ul").html('');
$(".show-success-message").css('display','block');
$(".show-error-message").css('display','none');
$(".show-success-message").find("ul").append('<li>Trainees Has Been Successfully Inserted.</li>');
}
}
});
});
function display_error_messages(msg) {
$(".show-error-message").find("ul").html('');
$(".show-error-message").css('display','block');
$(".show-success-message").css('display','none');
$.each( msg, function( key, value ) {
$(".show-error-message").find("ul").append('<li>'+value+'</li>');
});
}
});
</script>
我尝试将 return response()->json(['success'=>'true]); 更改为 return redirect('trainee')->with('success','Trainees Saved'); 并在我的刀片上添加会话错误,但似乎什么也没发生。
谁能帮帮我?
【问题讨论】:
-
data里面有什么? -
@Swati all input sir :)
-
嗨,检查this 可能会有所帮助。更改后让我输出
data。
标签: jquery laravel laravel-blade