大家好。在我的 laravel 应用程序中,我试图检查表中是否存在特定日期、主题、年级 的出勤率。如果是这样,我有一个 if 语句
设置来根据返回的内容显示所需的结果。
我正在使用 ajax 发出请求,但似乎 ajax 一直在运行错误函数,而且我似乎没有收到任何错误代码或内部服务器错误(500、404、403 等)
在我的控制台中,状态返回是 200 ok
这是我的脚本:
$(document).on('change', '#subject', function(event) {
event.preventDefault();
/* Act on the event */
var subject = $('#subject').val();
var grade = $('#grade').val();
var date = $('#date').val();
if (subject != "" && grade != "") {
$.ajax({
url:"/attendence/students",
method:"GET",
data:{"subject_id":subject, "grade_id":grade, "date":date},
dataType:"json",
success:function(data){
$("#result").html(data);
},
error:function(){
$("#result").html('There was an error please contact administrator');
}
});
}
});
这是请求发送到的 Controller :
public function students(Request $request)
{
//
$grade = Grade::findOrFail($request->grade_id);
$subject = Subject::findOrFail($request->subject_id);
$students = Student::where('grade_id', $grade->id)->get(['id', 'first_name','middle_name', 'surname', 'grade_id']);
$statuses = Attendence::statuses();
// this check if attendence has been setup for the given date.
// if so prevent user for enter another date
$attendenceExists = Attendence::where([
'grade_id' => $grade->id,
'subject_id' => $subject->id,
'date' => $request->date
])->first();
if ($attendenceExists) {
return response()->json('A recorded attendence already exists for the seleced grade and subject!');
}
else {
return \View::make('attendence.partials.attendence-form')->with(array(
'students' => $students,
'subject' => $subject,
'date' => $request->date,
'statuses' => $statuses
));
}
}
现在,如果此代码返回 true:
// this check if attendence has been setup for the given date.
// if so prevent user for enter another date
$attendenceExists = Attendence::where([
'grade_id' => $grade->id,
'subject_id' => $subject->id,
'date' => $request->date
])->first();
if ($attendenceExists) {
return response()->json('A recorded attendence already exists for the seleced grade and subject!');
}
这里的条件运行并返回正确的结果。但是上面的 else 语句
确实运行了,但我没有得到正确的结果。这是我得到的结果:
There was an error please contact administrator
这表明正在运行的是ajax请求的这一部分:
error:function(){
$("#result").html('There was an error please contact administrator');
}
令人惊讶的是,当我检查控制台时,我看到的是:
这正是我想要的,否则返回 ajax。我做错了什么吗?
最佳答案
当您返回 html
时,您的 dataType
设置为 json
。将其更改为 html
。
关于javascript - Ajax 请求在 Laravel 中不断返回错误函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46895031/