[英]Ajax request keeps returning error function in Laravel
伙計們,美好的一天。 在我的 Laravel 應用程序中,我試圖檢查我的表中是否存在特定日期、科目、年級的出勤率。 如果是這樣,我有一個if statement
設置來根據返回的內容顯示所需的結果。
我正在使用 ajax 發出請求,但似乎 ajax 一直在運行錯誤函數,而且我似乎沒有收到任何錯誤代碼或internal server error(500, 404, 403, etc)
在我的控制台中,狀態返回是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');
}
});
}
});
這是請求發送到的控制器:
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 statement
確實運行了,但我沒有得到正確的結果。 這是我得到的結果:
有錯誤請聯系管理員
這表明正在運行的是 ajax 請求的這一部分:
error:function(){
$("#result").html('There was an error please contact administrator');
}
令人驚訝的是,當我檢查控制台時,我看到的是:
這正是我想要的,但 ajax 否則返回。 我做錯了什么嗎?
當您返回html
時,您的dataType
設置為json
。 將其更改為html
。
$.ajax({
url:"/attendence/students",
method:"GET",
data:{"subject_id":subject, "grade_id":grade, "date":date},
dataType:"json",
statusCode: {
200: function(data) {
$("#result").html(data.responseText);
};
}
}
});
試試這個。 我希望這會幫助你
我會說根本不要設置數據類型。 只需完全刪除該設置,讓 jQuery ajax() 方法為您自動檢測它。 這樣,如果響應類型是 JSON,它就會起作用。 如果響應類型是 HTML,它也可以工作。 👍🏻
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.