onclick使用ajax laravel从数据库中获取数据

时间:2017-09-03 01:34:09

标签: jquery json ajax laravel laravel-5.4

我要做的是在单击列表项时在下拉菜单中加载data-id,它需要从db检索数据并附加到表中。

到目前为止,我在下拉菜单中加载了数据ID,同时点击列表我发送ajax调用以检索数据。

我的代码(控制器页面):

public function calcList($id)
{

    $designId=design::find($id);
    $design = design::select( `design_no`, `design_name`, `weight_length`, `quantity`, `design_image`, `des2`, `des3`, `des4`, `des5`, `des6`, `des7`)->where('id','=',$designId);
    // return Response::json(array('datas' => $design));
    // return response()->json(['data'=>$design]);
    return Response::json($design);
}  

Ajax请求:

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

        var id =($(this).attr("data-id"));
        $.ajax({
             type:"POST",
             url:"/calc_list/"+id,
             success : function(results) {
                 console.log(results);
             }
        }); 
    });
});  
  

在控制台日志中,结果打印为{..}
  如何将json构建到表中?

3 个答案:

答案 0 :(得分:2)

您不需要找到designId。 你只需要做

    public function calcList($id) {


    $design = design::select( `design_no`, `design_name`, `weight_length`, `quantity`, `design_image`, `des2`, `des3`, `des4`, `des5`, `des6`, `des7`)->where('id',$id)->get();  

    return Response::json($design);
}

你不应该通过首先找到一个带有id的设计然后再次使用它来获取design_no,design_name,......等来对数据库进行另一个查询。这似乎是多余的。

答案 1 :(得分:1)

首先,您最好使用GET方法和cache: false ajax设置。在这种情况下,您不需要传递csrf令牌。

其次,您忘记使用get()方法获取数据。第三,您可以使用where而不使用=,默认情况下。

use Response; // don't forget or use response()

public function calcList($id)
{
    $designId=design::find($id);
    $design = design::select( 'design_no', 'design_name', 'weight_length', 'quantity', 'design_image', 'des2', 'des3', 'des4', 'des5', 'des6', 'des7')->where('id', $designId)->get();
    return Response::json($design);
}  

您可以将结果显示为表格,如下所示。

<div id="destination"></div>
...
$.ajax({
         type:"POST",
         url:"/calc_list/"+id,
         success : function(results) {
             var $table = $('<table></table>');
             $('#destination').html('');

             for(var i=0;i<=results.length;i++) {
                 $table.append('<tr><td>No</td><td>'+results[i].design_no+'</td></tr>');
                 $table.append('<tr><td>Name</td><td>'+results[i].design_name+'</td></tr>');
             }
             $('#destination').append($table);
         }
    }); 

答案 2 :(得分:0)

您正在以错误的方式检查条件。 find($id)检索单个RECORD,而不是主键。修改您的控制器方法。

public function calcList($id) {

    $design = design::select( `design_no`, `design_name`, `weight_length`, `quantity`, `design_image`, `des2`, `des3`, `des4`, `des5`, `des6`, `des7`)->where('id','=', $id)->get();   //*** change to id

    // return Response::json(array('datas' => $design));
    // return response()->json(['data'=>$design]);
    return Response::json($design);
}

更多:https://laravel.com/docs/5.4/eloquent#retrieving-single-models

还要确保将其添加到脑中

<meta name="_token" content="{{ csrf_token() }}" />