【发布时间】:2017-05-16 09:19:21
【问题描述】:
请,我需要此代码的帮助。我有一个下拉列表,显示不同类型的帐户。我希望能够在下拉列表的更改事件中显示属于这些帐户的交易。我能够做到这一点,使用传统的 php 和 ajax。但我只是在学习 laravel 框架,我被卡住了。请帮我看看我在哪里错过它或实现这一壮举的更好方法。
查看视图:
<form role="form">
<div class="col-md-8">
<select name="grpid" class="form-control" id="grpid">
@foreach($account as $account)
<option value="{{$account->code}}">{{$account->accountName}}</option>
@endforeach
</select></div><div class="col-md-4">
<button type="button" name="sbt" class="sbt btn btn-block btn-success" id="sbt">Retrieve</button></div>
</form>
</div>
<br/>
<br/>
</h2>
<div id="tableview"></div>
</div>
</div></div>
@endsection
<script src="/mat/js/newJquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#grpid').on("change",function(){
var sid = $(this).val();
var div = $(this).parent();
var op =" ";
$.ajax({
type:'post',
url: '/postForm',
data:{
'_token':$('input[name=_token]').val(),
'selectedid': sid;
},
success: function(data){
op+='<table>';
op+='<tr><th>SN</th><th>Date</th><th>Account Type</th><th>Narration</th><th>Amount</th></tr>';
for(var i=0;i<data.length;i++){
op+='<tr>';
op+='<td>'+i+'<td><tr>';
op+='<tr><td>'+data[i].transdate+'</td></tr>';
op+='<tr><td>'+data[i].acctype+'</td></tr>';
op+='<tr><td>'+data[i].accounts_code+'</td></tr>';
op+='<tr><td>'+data[i].narration+'</td></tr>';
op+='<tr><td>'+data[i].amount+'</td></tr>';
op+='</tr>';
}
op+='</table>';
div.find('#tableview').append(op);
},
error: function(){
console.log("Error Occurred");
}
});
});
});
查看Controller的postForm方法
public function postForm(Request $request)
{
$data = Accounttrans::where('accounts_code',$request->selectedid)->get();
return response()->json($data);
}
表格路线:
Route::get('/openform','AccounttransController@openform');
Route::post('/postForm','AccounttransController@postForm');
请帮助。我想以表格格式显示结果。
【问题讨论】:
-
你能提供你在ajax成功中获得的数据结构吗?
-
@SKJajoriya:它根本不显示任何数据。事实上,它只是在从下拉列表中选择后显示空白页。这就是为什么我要问是否有更好的方法来实现这一目标
-
使用console.log 来查看实际返回的数据是什么。它可能会给你一个线索。
-
@T.Shah:我使用了 console.log(data),但它没有显示任何内容。但是,当我使用 console.log(sid) 时,它会为下拉项提供 id。这表明我正在定位并获取输入,但在处理时它不会返回任何内容。请问,有没有更好的方法可以使用 laravel 根据下拉列表中的选定项目从数据库中获取数据?
-
首先确保您的 ajax 返回正确的数据。为此,只需从 ajax 返回一条简单消息并在成功部分使用 console.log 来确认您正在接收正确的数据。