Laravel 5.4 和数据表 - Ajax - 保存/发布数据 - 服务器端
Posted
技术标签:
【中文标题】Laravel 5.4 和数据表 - Ajax - 保存/发布数据 - 服务器端【英文标题】:Laravel 5.4 and Datatables - Ajax - Saving / Posting Data - Server Side 【发布时间】:2018-03-08 16:59:09 【问题描述】:我目前正在尝试将数据表中的数据保存回数据库。我正在处理数据表中的表单字段,并希望更改输入值并保存回数据库。理想情况下,如果 id 不存在,我希望能够保存到数据库中的另一个表,但是现在我只是尝试进行更改并将其恢复到原始表。 我正在使用 laravel 5.4 和数据表插件。 我一直在查找有关 laracast、堆栈溢出和数据表的各种帖子。我已经将我的数据保存在我的控制器中,并不断得到一个对象作为回报。我尝试在我的模型中更改受保护的 $casts 以查看我在开发工具中获得的价值,但它没有帮助。我还在控制器中尝试了多种保存方法,但均无济于事。请参阅下面的响应和代码:
截图 1
截图 2
路线:
Route::get('/plunker', ['uses'=>'Controller@plunker']);
Route::get('/plunker/ttotgetposts', ['as'=>'plunker.ttotgetposts','uses'=>'Controller@ttotGetPosts']);
Route::post('/plunker', 'Controller@saveOrUpdate')->name('saveOrUpdate');
型号:
namespace App;
use Illuminate\Database\Eloquent\Model;
use \DB;
class Inducted extends Model
protected $casts = [
'id' => 'string',
'book_name' => 'string',
'date_inducted' => 'string',
];
protected $table = 'books';
protected $fillable = ['book_id', 'book_name', 'date_inducted', 'updated_at', 'created_at'];
查看:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Save test</title>
<link rel="stylesheet" href="/css/bootstrap-3.min.css">
<link rel="stylesheet" type="text/css" href="/css/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="/css/led.css">
<link rel="stylesheet" type="text/css" href="/css/jquery-ui.structure.min.css">
<link rel="stylesheet" type="text/css" href="/css/jquery-ui.theme.min.css">
<link rel="stylesheet" type="text/css" href="/css/dataTables.jqueryui.min.css">
<link rel="stylesheet" type="text/css" href="/css/ssstyle.css">
<script src="/js/jquery-1.12.4.js"></script>
<script src="/js/jquery.dataTables.min.js"></script>
<script src="/js/dataTables.jqueryui.min.js"></script>
<script src="/js/jquery-ui.min.js"></script>
<script src="/js/jquery-ui.accordion.multiple.js"></script>
<script src="/js/demo.js"></script>
</head>
<body>
<h3>ttot Save Test</h3>
<div>
<div class="containershe">
<table id="books" class="ttotsave" style="width:100%">
<thead>
<tr><th>ID</th>
<th>Name</th>
<th>Inducted</th>
--<th>Edit</th>--
--<th>Delete</th>--
</tr>
</thead>
</table>
</div>
<button data-token=" csrf_token() " type="submit">Submit</button>
<script type="text/javascript">
$(document).ready(function()
oTable = $('#books').DataTable(
"processing": true,
"serverSide": true,
"scrollY": "500px",
"scrollX": true,
"scrollCollapse": true,
"paging": true,
"ajax": " route('tabletotable.ttotgetposts') ",
"dataSrc" : "",
"columns": [
'data': 'id', render: function ( data, type, row)
if (data)
var id = $('<div />').text(data).html();
else
var id = '';
return '<input type="text" id="id" name="id[' + $('<div />').text(row.id).html() + ']" value=" ' + id + ' ">';
,
'data': 'book_name', render: function ( data, type, row)
if (data)
var name = $('<div />').text(data).html();
else
var name = '';
return '<input type="text" id="name" name="name[' + $('<div />').text(row.id).html() + ']" value=" ' + name + ' ">';
,
'data': 'date_inducted', render: function ( data, type, row)
if (data)
var date = $('<div />').text(data).html();
else
var date = '';
return '<input type="text" id="inducted" name="inducted[' + $('<div />').text(row.id).html() + ']" value=" ' + date + ' ">';
,
]
);
$('button').click( function()
var data = oTable.$('input, select').serialize();
$.ajax(
headers:
'X-CSRF-TOKEN': $('button').data('token'),
,
type: "POST",
url: 'tabletotable',
dataSrc : 'data',
dataType: 'JSON',
data: data,
async: 'false',
success: function()
alert('saved');
console.log('my message' + response + data);
);
);
);
</script>
</div>
</body>
</html>
控制器:
<?php
namespace App\Http\Controllers;
use App\Books;
use App\Inducted;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\Request;
use DataTables;
use DB;
class Controller extends BaseController
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public function plunker()
return view('plunker');
public function ttotGetPosts()
$users = DB::table('books')->select('*');
return DataTables::of($users)
->make(true);
public function saveOrUpdate(Request $request)
dd($request->all());
DB::table('books')->where('id','=', $request->get('id'))
->update(['book_name' => $request->get('name'),
'date_inducted' => $request->get('inducted')]);
return redirect('/index')->with('status','Successfully updated !');
如果您需要更多信息,请告诉我
亲切的问候
【问题讨论】:
【参考方案1】:试试这个
public function saveOrUpdate(Request $request)
// dd($request->all());
$ids = $request->get('id');
$names = $request->get('name');
$inducteds = $request->get('inducted')
foreach($ids as $id)
DB::table('books')->where('id','=', $id)
->update([
'book_name' => $names[$id],
'date_inducted' => $inducteds[$id]
]);
return redirect('/index')->with('status','Successfully updated !');
【讨论】:
该死的......你是一个血腥的传奇。我已经为此苦苦琢磨了好几天了:)我才开发了 4 个月,但我仍然对事情有所了解。谢谢堆以上是关于Laravel 5.4 和数据表 - Ajax - 保存/发布数据 - 服务器端的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 $request->ajax() 和 Laravel 5.4 检查请求是不是为 ajax