我正在尝试使用Laravel DataTables和服务器端处理将我从ajax调用中获取的数据呈现为数字输入字段。
我按预期收回数据,但渲染没有发生,我看不到任何行。
<div class="row col-md-12 table-responsive">
<table class="table table-bordered table-striped" id="no-cost-price-table">
<thead>
<tr>
<th>{{ trans('labels.backend.table.store.best_profit_margin.product') }}</th>
<th>{{ trans('labels.backend.table.store.best_profit_margin.price_excl') }}</th>
<th>{{ trans('labels.backend.table.store.best_profit_margin.cost_price') }}</th>
</tr>
</thead>
</table>
</div>
<!-- /.col -->
这是我试图填充的表格。
$('#no-cost-price-table').DataTable({
'processing': true,
'serverSide': true,
'ajax': '{!! route('admin.ajax.dashboard.no_cost_price.get') !!}',
'responsive': true,
'paging': true,
'lengthChange': true,
'searching': false,
'ordering': false,
'info': true,
'autoWidth': false,
'language': {
'emptyTable': '{{ trans('strings.backend.stores.tables.no_products') }}',
'lengthMenu': '{{ trans('strings.backend.stores.tables.menu') }}',
'info': '{{ trans('strings.backend.stores.tables.info') }}',
},
'columns': [
{data: 'name', name: 'name'},
{data: 'price_excl', name: 'price_excl'},
{
data: 'data', name: 'cost_price_excl',
render: function (data, type, row) {
console.log(data);
return '<input class="form-control" name="updateCostPrice" type="number" step="0.01" @input="updateCostPrice($event, ' + data.id + ')" value="' + data.cost_price + '" >';
}
},
],
});
这是我运行的脚本。
/**
* All route names are prefixed with 'admin.ajax'.
*/
Route::group(['middleware' => 'access.routeIsXhr', 'prefix' => 'ajax', 'as' => 'ajax.'], function () {
Route::get('dashboard/get/NoCostPriceTable/', 'Ajax\DashboardController@getNoCostPriceData')
->name('dashboard.no_cost_price.get');
});
这是我的路线档案
public function getNoCostPriceData(Request $request)
{
$store = access()->getCurrentStore();
$website = $store->website();
$limit = $this->getLimit($store);
$data = \DB::table('store_data_products')->select('price_excl', 'cost_price_excl', 'name', 'store_data_product_id')->where([
['cost_price_excl', '=', 0],
['website_id', '=', $website->website_id],
])->when($limit, function ($query) {
return $query->limit(100);
})->get();
$data = json_decode(json_encode($data), true);
if (! empty($data)) {
for ($i = 0; $i < count($data); $i++) {
$data[$i]['price_excl'] = Number::money($data[$i]['price_excl']);
$data[$i]['data'] = ['id' => $data[$i]['store_data_product_id'], 'cost_price' => $data[$i]['cost_price_excl']];
}
}
return Datatables::of($data)->make(true);
}
这是ajax调用调用的函数。
我从我的ajax调用中获取行但是表仍然是空的。
我希望有人能够指出我可能犯的任何错误并解决这个问题。