如何从控制器中的JSON返回HTML循环到刀片

时间:2019-01-31 12:06:47

标签: jquery json laravel

我在控制器中有代码来获取商店的城市,同时我想获取此商店的类别。一切正常,但类别结果如下:

["Taco Bar", "Yogurt Bar", "Hot Breakfast", "Utensils", "Beverages", "Desserts", "Salads", "Ala Carte", "Party Essentials"]

如何在HTML表中查看这些类别?

public function getCity($id)
{
  $store_city = Storeinfo::where('store_id', $id) -> pluck('store_city');
  $categories = Category::where('store_id', $id) -> pluck('Category_name');
  return Response::json(array(
    'store_city' => $store_city,
    'categories' => $categories,
  ));
}
success: function(data) {
  $('#store_city').val(data.store_city);
  console.log(data.categories);
}

2 个答案:

答案 0 :(得分:0)

尝试这样:

JS:

success:function(data){

  $('#store_city').val(data.store_city);

   var tableCOntent = "<table border='1'><tr><th>Categories</th></tr>";

   data.categories.forEach(function(item){

      tableCOntent += "<tr><td>" + item + "</td></tr>";
   });

   tableCOntent += "</table>";

   $('.table-data').html(tableCOntent);

}

HTML:

<div class="table-data"></div>

答案 1 :(得分:0)

您可以创建一种动态组件。首先,在views文件夹中创建一个目录,并将其命名为“ dynamicComponents”(我通常这样命名),然后在该文件夹中创建一个刀片文件名,无论其名称如何(例如CategoriesTable.blade.php)。该文件应如下所示:

@foreach ($categories as $category)
    <tr>
        <td>{{$category->name}}</td>
    </tr>
@endforeach
<style>
    //All the style you need for this component 
</style>

<script>
    $(document).ready(function () {
        //All the javascript you need for this component 
    });
</script>

主文件(要显示表格的文件)应如下所示:

<table>
    <thead>
        <tr>
            <th>Categories</th>
        </tr>
    </thead>
    <tbody class="dynamicCompnentWrapper">
        @include('dynamicComponents.categoriesTable')
    </tbody>
</table>

还必须创建一个如下所示的javascript函数:

function reload(url, method, wraperClass,id){
    return $.ajax({
        type: 'GET',
        url: url + '/' + method + '/' + id,
        success: function (result) {
            $('.' + wraperClass).html(result.html);
        }
    });
}

在控制器类中,您必须添加一个方法名称,该名称随您的需要而不同(通常我将其命名为 重新加载),它看起来像:

public function reloadCategoriesTable($id)
    {
        if (request()->ajax()) {
            $categories= Category::where('store_id', $id)->get();
            $html = view('dynamicComponents.categoriesTable', compact('view', 'categories', 'folder'))->render();
            return response()->json(compact('html'));
        }
        return view('errors.404');
    }

您还需要为添加的控制器功能创建路由。

因此,当用户第一次加载页面时,将使用getCity()或甚至更好的index方法中的数据显示表,并且无论何时进行更改,都可以调用javascript函数(

reload('your base url ex. www.blabla.com', ' function that you created in controller in this case reloadCategoriesTable', 'wrapper class from table body dynamicCompnentWrapper',id_of_category) 

),此函数将调用控制器中的方法并重新加载(每次从javascript调用reload()函数时,都会“重新绘制”表)。