我创建了一个ajax请求来显示我的表格雄辩查询的结果,该查询依赖于一个选择框" poule"。
一切正常,但是当我通过从选择框中选择poule_id来运行ajax请求时,我需要显示json结果。我希望将结果显示为表格中的foreach循环($ equipes as $ equipe),因为您可以看到我显示了相关模型的值。
更新:
我的模特Equipe:
class Equipe extends Model
{
public function structure()
{
return $this->belongsTo('App\Structure');
}
我的模型CompetEquipe(我用它来显示我的foreach)
class CompetEquipe extends Model
{
public function equipe(){
return $this->belongsTo('App\Equipe' , 'equipe_id');
}
像这样我可以访问我的foreach中关系中的表
<tr>
<td>
<a href="{!! route('club.show', $equipe->equipe->structure->id) !!}">{{$equipe->equipe->structure->nom_structure}}</a>
</td>
<td>
<a href="{!! route('equipe.show', $equipe->equipe->id) !!}">{{$equipe->equipe->lb_equipe}}</a>
</td>
<td>{!! Form::text('nb_bonus') !!}</td>
</tr>
实际上用这种方式我只能显示equipe_id但是我想显示对象来访问相关的其他模型,并将结果显示为表格中的foreach,如:
@foreach($equipes as $equipe)
<tr>
<td>
<a href="{!! route('club.show', $equipe->equipe->structure->id) !!}">{{$equipe->equipe->structure->nom_structure}}</a>
</td>
<td>
<a href="{!! route('equipe.show', $equipe->equipe->id) !!}">{{$equipe->equipe->lb_equipe}}</a>
</td>
<td>{!! Form::text('nb_bonus') !!}</td>
</tr>
@endforeach
希望有人明白我想做什么。非常感谢朋友们
这里是我的JSON结果:{&#34; equipes&#34;:[{&#34; equipe_id&#34;:1,&#34; poule_id&#34;:1}]}
我的选择过滤器搜索:
<select id="poule">
@foreach($select_poules as $select_poule)
<option value="{{$select_poule->id}}">{{$select_poule->lb_poule}}</option>
@endforeach
</select>
我的表:
<table id="equipes" class="table table-striped">
<thead>
<tr>
<th>Club</th>
<th>Nom de l'équipe</th>
<th>Bonus(+/-)</th>
</tr>
</thead>
<tbody>
@foreach($equipes as $equipe)
<tr>
<td>
<a href="{!! route('club.show', $equipe->equipe->structure->id) !!}">{{$equipe->equipe->structure->nom_structure}}</a>
</td>
<td>
<a href="{!! route('equipe.show', $equipe->equipe->id) !!}">{{$equipe->equipe->lb_equipe}}</a>
</td>
<td>{!! Form::text('nb_bonus') !!}</td>
</tr>
@endforeach
</tbody>
</table>
我的控制器:
public function searchEquipes(Request $request)
{
$equipes = [];
if($request->has('poule_id')){
$equipes = EquipePoule::where('poule_id',$request->poule_id)
->get();
}
return response()->json(['equipes' => $equipes]);
}
我的剧本:
<script>
$(document).on('change', '#poule', function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: 'GET',
dataType: "json",
url : '/licences/public/search/equipes',
data : {
poule_id : $('#poule').val()
},
success:function(data){
$('#equipes').empty();
for (var i = 0; i < data.equipes.length; i++) {
$('#equipes').append('<tr><td>'+data.equipes[i].equipe_id+'</td></tr>')
}
},
timeout:10000
});
});
</script>
答案 0 :(得分:1)
要使用AJAX请求的响应替换表的内容,请使用jQuery的replaceWith。 您需要稍微更改您的jQuery成功函数。
success: function(data) {
//Build the row data as you wish to display it
var rowData = ""
$.each(team["equipes"][0], function(i, value) {
var rowData += $("#equipes").append("<td>"+value+"</td>");
})
$("#equipes").replaceWith("<tr>"+rowData+"</tr>
$("#equipes").append("</tr>");
}
这会将您的初始表数据替换为您的选择。