我的视图中有一个选择框。我想要做的是,当我在选择框中选择一个选项时,它将使用从数据库中获取的数据更新视图。以下是我尝试过的代码片段:
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(内部服务器 误差)
我应该改变什么?我的观念是否正确? 谢谢!
答案 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');
});
....