javascript - Ajax 请求在 Laravel 中不断返回错误函数

标签 javascript php jquery ajax laravel

大家好。在我的 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');
}

令人惊讶的是,当我检查控制台时,我看到的是:

enter image description here

这正是我想要的,否则返回 ajax。我做错了什么吗?

最佳答案

当您返回 html 时,您的 dataType 设置为 json。将其更改为 html

关于javascript - Ajax 请求在 Laravel 中不断返回错误函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46895031/

相关文章:

javascript - 如何获取相同标签或先前的 td 内部标签类

javascript - 在javascript中使用变量引用json数字键

php - 从网站联系表接收电子邮件但没有内容

javascript - 如何区分在html表单中单击了哪个按钮并基于该按钮通过ajax传递不同的值?

php - Laravel-多对一的多态关系

php - 我可以将所有带有 jquery 文件上传的文件转换为 jpg 吗?

javascript - 使用css3翻译滑动div

javascript - 正确转义javascript json字符串中的换行符

javascript - 根据设备宽度更改视频标签属性(JQuery/Javascript)

Jquery .load() 使用表单中的数据