Laravel将数据从ajax传递到模态视图,该视图位于单独的文件中,导致模态无法渲染

时间:2018-08-06 09:45:40

标签: php ajax laravel

这是我的刀片视图,其中列出了借方及其所有属性,例如ID,名称,地址。这也有一个模式查看按钮,弹出一个应该通过id查询借方的模式,然后显示其详细信息data-target="#viewModal" onclick='showDetail({{$var->id}});

(ajax_table.blade):

<?php
if(!empty($data)){$isi = json_decode($data);}
if(!empty($modaldata)){$isimodal = json_decode($modaldata);}
 ?>

@if(!empty($isi->data))
    @foreach($isi->data as $var)
    @include('userdebitur.ajax_modal_view')
    <tr>
        <td>{{ $var->id }}</td>
        <td>{{ $var->name }}</td>
        <td>{{ $var->address }}</td>
        @endif
        <td>
            <div class="btn-group">
                <button title="Detail Info" type="button" class="btn btn-default btn-flat" data-toggle="modal" data-target="#viewModal" onclick='showDetail({{$var->id}});'><i class="fa fa-eye"></i></button>
            </div>
        </td>
    </tr>
    @endforeach
@else
    <tr><td align="center" colspan="5">Not found.</td></tr>
@endif

这是我从上方调用的模式文件(ajax_modal_view.blade):

    <div class="modal fade" id="viewModal">
        <div class="modal-dialog">
            <div class="modal-content mdl-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">Default Modal</h4>
                </div>
                <div class="modal-body">
                    <p>test @if(isset($isimodal)){var_dump($isimodal)} @endif</p> //I'm trying to output this
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Close</button>
                    <button type="button" class="btn btn-primary">Save changes</button>
                </div>
            </div>
        </div>
    </div>

模态视图按钮也称为showDetail(),将借方ID作为变量传递,然后通过调用ajax.blade内部的函数从控制器返回数据:

function showDetail(id)
{
    $.ajax({
        type:"GET",
        url: "{{ url('ajax/userdebitur/') }}"+"/"+id,
        dataType: "json",
        cache: false,
        success: function(modaldata){        
            $("#viewModal").html(modaldata.view); //this is likely the problem
        },
        error: function (modaldata) {
            // 
        }
    });
}

这是我的控制器:

public function getdebitur($id)
{
    $content = Debitur::find($id);
    $modaldata['content'] = $content;
    $modaldata['view'] = view('userdebitur.ajax_modal_view')->with('modaldata', json_encode($content))->render();

    echo json_encode($modaldata);
}

在Web浏览器中使用控制台时,我已经成功检索了显示所有对象的选定借方数据,但是我似乎无法将任何信息传递给模式。 我试过将数据传递给ajax_table.blade本身,将模态移至ajax_table.blade内,传递数据时未从控制器获取视图,将json_decode($ modaldata)移至模态本身内,无济于事。

如果在ajax.blade中,我使用$("#viewModal").html(modaldata.view);模态显示一秒钟,然后消失,但是如果我使用$("#viewModal").modal(modaldata.view);$("#viewModal").modal(modaldata);则不显示$ isimodal值。

我想做的是:从控制器传递值并将var_dump放在模态中。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。该错误是由模式在另一个模式中由ajax更新而不是替换整个模式引起的。

解决方案是从我的模式文件中删除<div class="modal fade" id="viewModal">,然后它将正确呈现。