Laravel:Ajax在更改控制器时传递选定的选项

时间:2015-01-30 07:11:48

标签: php jquery laravel

我的视图中有一个选择框。我想要做的是,当我在选择框中选择一个选项时,它将使用从数据库中获取的数据更新视图。以下是我尝试过的代码片段:

View.php

< script >
  $('#examId').on('change', function() {
    var optionSelected = $(this).find("option:selected");
    var examid = optionSelected.val();
    alert(examid);

    $.ajax({
        type: "post",
        url: "/admin/testresults/show",
        data: {
          id: examid
        }
        // data: $("#examId").val()
      })
      .done(function() {
        alert('im here');
      });
  }); < /script>

<form name="form1" method="post" action="testresults">
  <select name="examId" style="width:50%;" id="examId">
    <option value='non'>Select an exam...</option>
    <option value='1'>Foo1</option>
    <option value='2'>Foo2</option>
  </select>
  <input type="submit" />
</form>

if(isset($rows)){ 
  $i=1; 
  foreach ($rows as $row) { 
    print "
      <tr>
        <td>".$i."</td>
        <td>".$row->name." ".$row->last_name."</td>
        <td>".($result = ($row->result == 1) ? 'Pass' : 'Fail')."</td>
      </tr>
    ";
    $i++;
  }
}

Controller.php这样

public function showTestResults(){
  $examId = Input::get('id');
  $rows = TestResults::getExamNamebyID($examId);
  return  View::make('backend.admin.testResults.index')->with('rows', $rows);
}

Route.php

Route::post('testresults/show',array('as' => 'show','uses' => 'AdminController@showTestResults'));

Model.php

public static function getExamResults($examId){
    return DB::table('testresults')
        ->join('users', 'users.id', '=', 'testresults.userId')
        ->where('examId', $examId)
        ->groupBy('testresults.userId')
        ->get();
}

但是,当我在选择框中选择一个选项时,我收到以下错误:

  

POST http://localhost:8000/admin/testresults/show 500(内部服务器   误差)

我应该改变什么?我的观念是否正确? 谢谢!

1 个答案:

答案 0 :(得分:2)

好像你的路由不正确,所以请试试这个,

将您的view.php更改为刀片文件,然后将view.php重命名为view.blade.php

您的view文件中

替换

<form name="form1" method="post" action="testresults">

Form::open(array('route' => 'show', 'name' => 'form1', 'id' => 'testForm', 'method' => 'POST'))

<form name="form1" method="post" action="{{ URL::route('show') }}" id="testForm">
您的js

中的

....
$.ajax({
    type: "post",
    url: $("#testForm").attr('action'),
    data: {
      id: examid
    }
    // data: $("#examId").val()
  })
  .done(function() {
    alert('im here');
});
....