【问题标题】:laravel real time data retrieve from databaselaravel 实时从数据库中检索数据
【发布时间】:2018-09-19 13:52:22
【问题描述】:

如何在 laravel 中获取实时数据?

逻辑

我有基于 JavaScript 的表单,用于在我的数据库中保存新数据并且它正在工作

在我的保存数据表单旁边,我有一个选择框,其中包含要选择的我保存的数据。

问题出在我的选择框中,我只能看到旧数据,如果我想查看刚刚保存的数据,我必须刷新页面。

示例:

我将新规范保存在我的数据库中,比如说 core i5 cpu 然后在我的表单旁边我有选择框来选择该框中的规范我看不到 core i5 cpu 我必须刷新页面才能看到它。

问题

如何在不刷新页面的情况下将结果保存到数据库后立即获得?

ps:我需要的是如何在没有的情况下检索我的specifications 引用页面。

我应该将我的数据转换为 json 并通过 ajax 检索还是如何?

更新

我添加了新的函数和路由,以便在 ajax 中将我的数据作为 json 获取,这就是我现在拥有的:

controller

public function subspacs(){
      $specifications = Specification::with('subspecifications')->get();
      return response()->json($specifications); 
}

route

Route::get('subspacs', 'ProductController@subspacs')->name('subspacs');

javascript

<script>
  $(document).ready(function() {
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

        $.ajax({
             type:"GET",
             url:"{{ url('admin/subspacs') }}",
             success : function(response) {
              console.log(response);
             }
        }); 
  });  
</script>

问题

  1. 我的 Ajax 将在控制台but not updated data 中显示我的数据,问题 看到新数据需要刷新页面仍然存在。
  2. 为了refresh my select box every 2 seconds,我尝试了下面的代码 通过 jQuery 并且有效。

    setTimeout ( function ( ) { $ ( ' #subspecifications ') . append ('< option value = "gg" >TEST SUCCESS< / option> '); } , 2000 ) ;

基本上我尝试了 2 种方法,但结果不成功:

  1. 使用 Ajax(未按预期工作)
  2. 尝试刷新我的选择框结果(成功)

现在question 是如何在选择框中将其父项下添加的规范?

屏幕截图

here is small video 看看现在到底发生了什么,避免误解。

【问题讨论】:

  • 检查broadcasting
  • Ajax 绝对可以帮助您。创建一个操作以从数据库中检索数据。在 javascript 中使用 Ajax 调用它。
  • @anil_pulikoden 你介意帮我用 ajax 获取我的数据吗?我制作了public function subspacs(){$specifications = Specification::all();return response()-&gt;json($specifications); } 和路由Route::get('subspacs','ProductController@subspacs')-&gt;name('subspacs'); 我如何在刀片中显示它们?
  • @anil_pulikoden 更新了我的问题
  • @devk 更新了我的问题

标签: php json ajax laravel


【解决方案1】:

你可以使用ajax

$.ajax({
              type:'GET',
              url:'{{ url("/getpost") }}',
              data: {data from response}
              success:function(response){
                console.log(response);              
              },
              error:function(){console.log(data);}
          });

【讨论】:

    【解决方案2】:

    已解决

    我在视图中添加了按钮:

    <button data-toggle="tooltip" data-placement="top" title="Refresh" id="customerSearchButton" class="btn-sm btn btn-warning customerSearchButton" type="button"><i class="fa fa-refresh"></i></button>
    

    并将我的脚本更改为:

    <script>
      $(document).ready(function() {
        $("#customerSearchButton").on("click", function (event) {
          $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
    
            $.ajax({
              url: "{{ url('admin/subspacs') }}",
              type: "GET",
            }).success(function (result) {
                $('#subspecifications').empty();
                // loop
                $.each(result, function(key, value) {
                  $('#subspecifications').append('<optgroup label="'+value.title+'"></optgroup>');
                    $.each(value.subspecifications, function(key2, value2) {
                      $('#subspecifications').append('<option value="'+value2['id']+'">'+value2['title']+'</option>');
                    });
                });
                // end loop
              })
        });
      });  
    </script>
    

    现在每次我点击按钮时,我的规格列表都会更新为最新数据。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 2020-12-09
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 2019-02-04
      相关资源
      最近更新 更多