[英]after sending data with ajax,Data is not saving into the mysql database. Can't figure out whats the problem
我正在嘗試使用數據表在laravel中開發Ajax CRUD。 我只發送了一些字段(名字,姓氏和圖片)而成功。 但是對於所有其他字段,沒有數據存儲。 也沒有錯誤消息。 所以我不知道我在哪里搞砸了。
服務器端驗證正在運行。 但是之后沒有錯誤消息或活動。我試圖存儲來自控制器的數據而不直接從$ request分配數據。 (即'gender'=>“ male”)。 但無法正常工作的項目鏈接: https : //drive.google.com/open?id=1KclRdYFL-xwS1w0T2xXmljQGjBhGuTH_
數據庫表: 數據庫
HTML表單:
<form method="post" id="sample_form" class="form-horizontal" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label class="control col-md-4" >First Name : </label>
<div class="col-md-8">
<input type="text" name="first_name" id="first_name" class="form-control" required/>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4">Last Name : </label>
<div class="col-md-8">
<input type="text" name="last_name" id="last_name" class="form-control" required/>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4">Email : </label>
<div class="col-md-8">
<input type="email" name="email" id="email" class="form-control" required />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4">Mobile No : </label>
<div class="col-md-8">
<input type="number" name="mobile" id="mobile" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4">Address : </label>
<div class="col-md-8">
<textarea name="address" id="address" rows="3" class="form-control" required></textarea>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4">Gender : </label>
<div class="col-md-8">
<div class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="radio" name="gender" value="male" id="gender" autocomplete="off"> Male
</label>
<label class="btn btn-secondary">
<input type="radio" name="gender" value="female" id="gender" autocomplete="off"> Female
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4">Hobbies : </label>
<div class="col-md-8">
<div class="checkbox">
<label><input type="checkbox" name="hobbies[]" value="Swimming">Swimming</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="hobbies[]" value="Reading">Reading</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="hobbies[]" value="Gardening">Gardening</label>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4">Select Profile Image : </label>
<div class="col-md-8">
<input type="file" name="image" id="image" required />
<span id="store_image"></span>
</div>
</div>
<br />
<div class="form-group" align="center">
<input type="hidden" name="action" id="action" />
<input type="hidden" name="hidden_id" id="hidden_id" />
<input type="submit" name="action_button" id="action_button" class="btn btn-warning" value="Add" />
</div>
</form>
在Controller中存儲方法:
public function store(Request $request)
{
$rules = array(
'first_name' => 'required|min:4',
'last_name' => 'required|min:4',
'address' => 'required',
'mobile' => 'required|min:9|max:13',
'image' => 'required|image|max:2048',
'email' => 'required|unique:ajax_cruds',
);
$hobbies = implode(',',$request->hobbies);
$error = Validator::make($request->all(), $rules);
if($error->fails())
{
return response()->json(['errors' => $error->errors()->all()]);
}
$image = $request->file('image');
$new_name = rand() . '.' . $image->getClientOriginalExtension();
$image->move(public_path('images'), $new_name);
$form_data = array(
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'image' => $new_name,
'address' => $request->address,
'gender' => $request->gender,
'number' => $request->mobile,
'hobbies' => $hobbies,
'email' => $request->email
);
AjaxCrud::create($form_data);
return response()->json(['success' => 'Data Added successfully.']);
}
Javascript:
$('#sample_form').on('submit', function(event){
event.preventDefault();
if($('#action').val() == 'Add')
{
$.ajax({
url:"{{ route('ajax-crud.store') }}",
method:"POST",
data: new FormData(this),
contentType: false,
cache:false,
processData: false,
dataType:"json",
success:function(data)
{
var html = '';
if(data.errors)
{
html = '<div class="alert alert-danger">';
for(var count = 0; count < data.errors.length; count++)
{
html += '<p>' + data.errors[count] + '</p>';
}
html += '</div>';
}
if(data.success)
{
html = '<div class="alert alert-success">' + data.success + '</div>';
$('#sample_form')[0].reset();
$('#user_table').DataTable().ajax.reload();
}
$('#form_result').html(html);
}
})
}
好吧,我想查看$request
變量中的所有數據。 但是dd()
和var_dump()
方法均未顯示任何結果。 請幫助我找出問題所在。
您的AjaxCrud模型是什么樣的? 您是否設置了可填充屬性以匹配您要傳遞的數據庫字段名稱?
對於調試Laravel,您是否嘗試過Laravel Debugbar ? 它會幫助您顯示錯誤,我發現它對於調試Ajax響應非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.