Ajax Reponse Laravel反对

时间:2017-05-23 12:20:26

标签: javascript ajax laravel

我创建了一个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>

1 个答案:

答案 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>");
          }

这会将您的初始表数据替换为您的选择。