Laravel,如果使用json数组,如何将多个变量从控制器附加到ajax

时间:2019-07-12 23:37:29

标签: jquery ajax laravel

我正在使用json数组在成功部分将变量从控制器传递到ajax,但是问题是如果我在控制器中使用数组,则没有数据

ajax

  $(function(){ 
     $('.Item_root').on("click", function () { 

         var productid = $(this).data('id'); 

         $.ajax({ 
             url: '/get_products/' + productid, 
             type: "get", 
             success: function (data) 
             { 

                $('#menu-item').modal('show');
                alert(data.id);
                $('#product_title').html(data.product_name);
              }
          });
       }); 
    });

控制器

 public function getProducts($productid)
 { 
     $data = Product::findOrFail($productid);

     $categories =  Product::all();

     return Response::json(array(
        'data' => $data,
        'categories' => $categories,
      ));
  }

3 个答案:

答案 0 :(得分:0)

尝试将dataType: 'json'添加到您的请求中以自动反序列化响应。

此外,考虑将整个响应都转储到控制台,或者在开发人员工具中检查网络响应,以比使用alert(...)更好地了解正在发生的事情。

$(function(){
    $('.Item_root').on("click", function () {

        var productid = $(this).data('id');
        $.ajax({
            url: '/get_products/' + productid,
            type: "get",
            dataType: "json", // this will deserialize the response
            success: function (data) {

                console.log(data); // dump the entire response to the console

                $('#menu-item').modal('show');
                $('#product_title').html(data.product_name);
            }
        });
    });
});

答案 1 :(得分:0)

尝试一下:

页面加载后无需使用,请使用此表单来使用将始终有效的$(document)

     $(document).on("click", '.Item_root', function () { 

         var productid = $(this).data('id'); 

         $.ajax({ 
             url: '/get_products/' + productid, 
             type: "get", 
             success: function (data) 
             {                   
                //$('#menu-item').modal('show');

                console.log(data); //to verific the data that is coming

                //$('#product_title').html(data.product_name);
              }
          });
       }); 

控制器:

 use Illuminate\Http\Request;

 public function getProducts(Request $productid)
 { 
     $data = Product::findOrFail($productid);

     $categories =  Product::all();

     return Response::json(array(
        'data' => $data,
        'categories' => $categories,
     ));
  }

您需要使用该请求,请立即尝试并签出。

还要检查路由是否正确,因为您的方法有一个名称,而在Ajax中则使用了另一个名称:Ajax- get_products /方法- getProducts

答案 2 :(得分:0)

简单的方法是使用 data.categories.id等等。就是这样