如何使用 ajax 将数据传递给控制器​​并相应地查看数据

Posted

技术标签:

【中文标题】如何使用 ajax 将数据传递给控制器​​并相应地查看数据【英文标题】:How to pass data to controller using ajax and view data accordingly 【发布时间】:2017-10-12 11:40:49 【问题描述】:

我正在使用 laravel 5.4。 我想获取过去 7 天、15 天、30 天和 45 天创建的产品。

我在 ajax 的帮助下得到了数据。当我从 ajax 获取数据时,我想向控制器添加 where 条件。我该怎么做。

我的ajax代码:

<script>
$("input[type='checkbox']").click(function() 
   var days = $(this).val();
   $.ajax(
        type: "get",
        url: '/getcreatedat',
        data:  'days': days ,
        success: function(data) 
          console.log(data);
        ,
    );
);
</script>

我想通过添加条件在这里传递数据: 控制器代码:

public function category($name, $main)
      $category_id = Category::where('name', $name)->value('id');
      if($category_id == "")
      
        $all_categories_id = Category::pluck('id');
      
      else
      
      $all_categories_id = Category::where('parent_id', $category_id)->pluck('id');
      $all_categories_id->push($category_id);
      
      $product_id = Product::where('name', 'like','%'.$main.'%')->pluck('id');
      $id = ProductCategory::whereIn('product_id', $product_id)->whereIn('category_id', $all_categories_id)->pluck('id');
      $products = Product::find($id);      

      //Categories Name in Sidebar
      $category = ProductCategory::whereIn('product_id', $id)->pluck('parent_id');
      $category_name = Category::whereIn('id', $category)->pluck('name');

      //Categories Name in dropdown
      $main_categories = Category::where('parent_id', '0')->pluck('name'); 

      //Product Image Mapping         
      $products->map(function ($product) 
      $directory = 'uploads/products/images/'.$product->id;
      $brand = Brand::select('name')->where('id', '=', $product->brand)->pluck('name');
      $brand_name = $brand->first(function($value, $key) 
        return $key == 'name';
      );
      if (is_dir($directory)) 
        $files = scandir ($directory);
        $img_file = $directory.'/'.$files[2];
        $product['front_img'] = $img_file;
        $product['brand'] = $brand_name;
        return $product;
      
        return $product;
      );

      return view('pages/product', compact('main_categories', 'products', 'name', 'category_name'));
    

【问题讨论】:

【参考方案1】:

我认为问题出在这里:

$("input[type='checkbox']").click(function() 
   var days = $(this).val();

这里你没有检查复选框是否被选中。因此,请进行以下更改:

$("input[type='checkbox']").change(function() 
    if( $(this).is(':checked') )
    
        var days = $(this).val();
    
);

现在只有check的时候才会得到checkbox的值,这是正确的逻辑

【讨论】:

是的。我做的。我只是检查了一下。我现在需要将成功数据传递给控制器​​并在其中再添加一个 where 条件

以上是关于如何使用 ajax 将数据传递给控制器​​并相应地查看数据的主要内容,如果未能解决你的问题,请参考以下文章

通过 AJAX 将数据传递给 Laravel 控制器

通过 AJAX 将数据传递给 MVC 中的控制器

如何在将数据推送到导航堆栈之前将数据传递给视图控制器并加载它?

Qt C++ - 如何成功地将数据传递给子进程?

单击注释时,如何将数据传递给其视图控制器?

使用 jquery ajax 将数据传递给 php 的问题