我不知道我錯過了什么,但我無法完成這項作業。它在 Laravel 中引發錯誤,POST 500(內部服務器錯誤)“引數太少無法運行”。
$(document).on('click', '.btnUpdateStudent', function (e) {
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$td=$(this).closest('td');
$tr=$(this).closest('tr');
var id=$td.attr("data-studId");
var inputEditName="<input type='text' class='inputEditName form-control'>";
$tr.find('td:eq(1)').val(inputEditName);
$tr.find('td:eq(1)').find("input.inputEditName").val();
var inputEditEmail="<input type='text' class='inputEditEmail form-control'>";
$tr.find('td:eq(2)').val(inputEditEmail);
$tr.find('td:eq(2)').find("input.inputEditEmail").val();
var options = $('#selectDepartment option');
var optionValues = $.map(options ,function(option){
return "<option value='" option.value "'>" option.text "</option>";});
var selectDepartment ="<select class='selectDepartment form-select form-control'></select>";
var updateDept=$('.selectDepartment').val();
$tr.find('td:eq(3)').val(selectDepartment);
$tr.find('td:eq(3)').find("select.selectDepartment").html(optionValues);
$tr.find('td:eq(3)').find("selectDepartment").val();
$tr.find('td:eq(3)').find("select.selectDepartment").val(updateDept);
var editname=$tr.find('td:eq(1)').find("input.inputEditName").val();
var editemail=$tr.find('td:eq(2)').find("input.inputEditEmail").val();
var editdepartment=$tr.find('td:eq(3)').find("select.selectDepartment").val();
var data = {
'id' : id,
'name' : editname,
'email': editemail,
'department_id': editdepartment
}
console.log(data);
$.ajax({
type: "POST",
url: "/update-student",
data: data,
dataType: "json",
success: function (response) {
console.log(response);
if (response.status == 400) {
$('#saveform_errList').html("");
$('#saveform_errList').addClass('alert alert-danger');
$.each(response.errors, function (key, err_values){
$('#saveform_errList').append('<li>' err_values '</li>');
});
}else {
$('#saveform_errList').html("");
$('#success_message').addClass('alert alert-success')
$('#success_message').text(response.message)
$("#inputForm").find('input').val("");
}
}
});
});
這是我的控制器。我錯過了什么嗎?還是應該有部分?
public function update(Request $request)
{
$validator = Validator::make($request->all(), [
'name'=> 'required|max:100',
'email'=>'required|email|max:100',
'department_id'=>'required'
]);
if($validator->fails())
{
return response()->json([
'status'=>400,
'errors'=>$validator->messages()
]);
}
else
{
$student = Student::find();
if($student)
{
$student->id = $request->input('id');
$student->name = $request->input('name');
$student->email = $request->input('email');
$student->department_id = $request->input('department_id');
$student->update();
return response()->json([
'status'=>200,
'message'=>'Student Updated Successfully.'
]);
}
else
{
return response()->json([
'status'=>404,
'message'=> 'No Student Found.'
]);
}
}
}
我嘗試查看我的代碼,但我真的無法區分問題。我需要幫助
uj5u.com熱心網友回復:
$student = Student::find()是你的問題所在。idfind() 方法需要一個引數,它是從資料庫中獲取的主鍵。
現在,由于您已經通過idajax 通過了,只需將代碼更改為:
public function update(Request $request)
{
$validator = Validator::make($request->all(), [
'name'=> 'required|max:100',
'email'=>'required|email|max:100',
'department_id'=>'required'
]);
if($validator->fails())
{
return response()->json([
'status'=>400,
'errors'=>$validator->messages()
]);
}
else
{
$student = Student::find($request->id); // here I have added the required parameter
if($student)
{
$student->id = $request->input('id');
$student->name = $request->input('name');
$student->email = $request->input('email');
$student->department_id = $request->input('department_id');
$student->update();
return response()->json([
'status'=>200,
'message'=>'Student Updated Successfully.'
]);
}
else
{
return response()->json([
'status'=>404,
'message'=> 'No Student Found.'
]);
}
}
}
更新:
要在請求成功后自動重繪 頁面Ajax,請執行以下操作:將其直接添加到您擁有的位置上方if (response.status == 400) {:
if (response.status == 200) {
location.reload();
}
這將自動重新加載頁面。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/520816.html
