我要做的是在单击列表项时在下拉菜单中加载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构建到表中?
答案 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() }}" />