onclick 使用 ajax laravel 从数据库中获取数据
onclick get data from database using ajax laravel
我想做的是在单击列表项时在下拉菜单中加载 data-id
,它需要从数据库中检索数据并追加到 table 中。
到目前为止,我在下拉菜单中加载了数据 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);
}
});
});
});
On the console log, the results print like {..}
How to built the json to table?
首先,你最好使用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);
}
您可以将结果显示为 table,如下所示。
<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);
}
});
您检查条件的方式有误。 find($id)
检索单个记录,而不是主键。修改您的控制器方法。
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() }}" />
您不需要查找 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、...等来对数据库进行另一次查询。这似乎是多余的。
我想做的是在单击列表项时在下拉菜单中加载 data-id
,它需要从数据库中检索数据并追加到 table 中。
到目前为止,我在下拉菜单中加载了数据 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);
}
});
});
});
On the console log, the results print like {..}
How to built the json to table?
首先,你最好使用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);
}
您可以将结果显示为 table,如下所示。
<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);
}
});
您检查条件的方式有误。 find($id)
检索单个记录,而不是主键。修改您的控制器方法。
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() }}" />
您不需要查找 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、...等来对数据库进行另一次查询。这似乎是多余的。