【问题标题】:Cannot output all the data with the same id in modal无法在模态中输出具有相同ID的所有数据
【发布时间】:2019-05-17 10:15:05
【问题描述】:

我想在我的模态中创建我的消息线程。单击模态按钮后,我无法获得具有相同参考号的所有消息。我的代码在接收到我传递给控制器​​的 refNumber 之前先执行查询。请帮我解决这个问题。 这些是我的代码..

这是我的控制器(HomeController)

   public function getAllMessage(Request $request){
 $refNumber = $request->get('refNumber');



    $messageThread = DB::TABLE('i_di_thread')
     ->SELECT('message')
     ->WHERE('refNumber', $refNumber);
     return view ('showInquiries', ['messageThread'=>$messageThread]);

}

这是我的javascript函数

 $('#inquire_t tbody').on('click','#mensahe',function(){
           var refNumber = $(this).attr('value');

        getMessageThread(refNumber);

        function getMessageThread(refNumber){
            $.ajax({
                url: 'getMessageThread',
                type: 'GET',
                headers: {'X-CSRF-TOKEN':$('meta[name="csrf-token"]').attr('content')},
                data: 'refNumber='+refNumber,
                dataType: 'text',
                success:function(msg){
                }//each
            });
        }

这是我的刀

 <!-- MODAL FOR MESSAGE THREAD -->
<div id="threadmessage" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h3>Message Thread</h3>
            </div>
            <div class="modal-body" style="height: 300px;" >
                <div class="row" style=" margin-left: 30px; margin-bottom: 5px; left: 20px; width: 550px; height: 200px; overflow: auto;">
                    <div>
                        @foreach ($messageThread as $thread)
                                {{$thread->message}}
                                <br>
                        @endforeach
                    </div>
                    <br>
                </div>
                <div>
                    <br>
                    <div class="col-md-2"> 
                        <b> Message: </b><br>
                    </div>
                    <div class="col-md-10"> 
                        <textarea required=" " id="messageContent" style="resize: none;" class="form-control" rows="2"></textarea>
                    </div>
                </div>
                <br>
            </div>
            <div class="modal-footer">
                <div>
                    <button type="button" id="btn-message" class="btn btn-default" data-dismiss="modal" style="background-color: #3c5fa6; color: white;"> 
                        Send <i class="fa fa-paper-plane-o ml-1"> </i>
                    </button>
                </div>
            </div>
        </div>
    </div>

【问题讨论】:

  • 所有 Ajax 调用总是异步的。返回值在成功时出现:function(msg){ --> 把你的代码放在这里!
  • 它仍然给我一个试图获取非对象属性的错误
  • 当然,因为浏览器是一个代码解释器,如果js部分运行时没有解析html部分,它们就没有实际意义。 developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous

标签: javascript laravel


【解决方案1】:
DB::TABLE('i_di_thread')
     ->SELECT('message')
     ->WHERE('refNumber', $refNumber);

将返回 Illuminate/Database/Eloquent/Builder 实例。 Check here

添加-&gt;get() 以将查询作为“选择”语句执行。 Check here

完整代码:

public function getAllMessage(Request $request){
    $refNumber = $request->get('refNumber');
    $messageThread = DB::table('i_di_thread')
                     ->select('message')
                     ->where('refNumber', $refNumber)
                     ->get();
    return view ('showInquiries', ['messageThread'=>$messageThread]);

}

更新

您正在使用刀片显示数据并且不是异步的。

Check this answer if you want to dynamically get data and to display in modal.

注意: 使用optional 函数访问属性不会导致错误。

示例:

<div class="row" style=" margin-left: 30px; margin-bottom: 5px; left: 20px; width: 550px; height: 200px; overflow: auto;">
                    <div>
                        @foreach ($messageThread as $thread)
                                {{optional($thread)->message}} {{-- accessing property without causing error --}}
                                <br>
                        @endforeach
                    </div>
                    <br>
                </div>

【讨论】:

    【解决方案2】:

    你应该试试这个:

    public function getAllMessage(Request $request){
     $refNumber = $request->get('refNumber');
    
    
    
        $messageThread = DB::TABLE('i_di_thread')
         ->SELECT('message')
         ->WHERE('refNumber', $refNumber)->get();
         return view ('showInquiries', ['messageThread'=>$messageThread]);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 2021-07-10
      • 2014-04-24
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多