如何从控制器获取记录到Ajax laravel 5.2
问题描述:
问候和尊重我希望在数据库表中记录要更新的记录时,但不幸的是,我不做任何无法获取ID并注入AJAX和AJAX的任何内容,我想要控制器和我从数据库和表中读取的数量之间的关系。如何从控制器获取记录到Ajax laravel 5.2
我的控制器:
public function index()
{
$category = Category::all();
return view('admin.category', compact('category'));
}
public function indexAjax(messageRequest $request){
$id=$request->id;
$category=Category::where('id',$id)->first();
$data=array('data'=>$category);
return $data;
}
public function create(messageRequest $request)
{
try {
Category::create($request->all());
return response()->json(array('sms'=>'save'));
}catch (Exception $e){
return response()->json(array('err'=>'error'));
}
}
我的路线:
脚本:
<script>
$('#submit').on('click', function (e) {
e.preventDefault();
var data = $('#create').serialize();
$.ajax({
type: 'post',
url: '{!! URL::route('category') !!}',
data: data,
success: function (data) {
alert(data.sms);
},
error: function() {
alert(data.err);
}
});
$.ajax({
type: 'GET',
url: '{!! URL::route('categoryAjax') !!}',
async: false,
dataType: 'json',
data: data,
success: function (data) {
alert(data.data);
}
});
});
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
</script>
我改变alert(data.data)
到alert('hi)
但不运行:( 改变:
$.ajax({
type: 'GET',
url: '{!! URL::route('categoryAjax') !!}',
async: false,
dataType: 'json',
data: data,
success: function (data) {
alert('hi');
}
});
我的Ajax方法POST:
$.ajax({
type: 'post',
url: '{!! URL::route('category') !!}',
data: data,
success: function (data) {
alert(data.sms);
},
error: function() {
alert(data.err);
}
});
我的控制器POST方法:
public function create(messageRequest $request)
{
try {
Category::create($request->all());
return response()->json(array('sms'=>'save'));
}catch (Exception $e){
return response()->json(array('err'=>'error'));
}
}
我的路线POST方法:
Route::group(['middleware' => 'web'], function() {
Route::auth();
Route::post('category', ['as' => 'category', 'uses' => '[email protected]e']);
});
答
这段代码我的问题是Solved.But从我的脚本并运行删除$.get
用POST方法。
public function create(messageRequest $request)
{
try {
$category = Category::create($request->all())->id;
return response()->json(['id'=>$category]);
}catch (Exception $e){
return response()->json(array('err'=>'error'));
}
}
通过此代码返回警报中的记录ID。
答
在Laravel 5.2,中间件具有网络,api和auth。 如果您想使用ajax发送的数据,您将使用带令牌的api中间件。 你可以看到这个参考:
- https://mattstauffer.co/blog/multiple-authentication-guard-drivers-including-api-in-laravel-5-2
- https://gistlog.co/JacobBennett/090369fbab0b31130b51
首先,api_token添加到用户:
首先认为你需要做的是一个api_token列添加到你的用户表。如果您刚刚启动应用程序,则可能会因修改Laravel附带的用户迁移而将您的新列纳入其中。
// add this to your users_table migration
$table->string('api_token', 60)->unique();
控制器:
public function upload()
{
return view('uploads.upload', ['api_token' => Auth::user()->api_token]);
}
查看:
<script>
$(function() {
'use strict';
var url = '/api/photos?api_token={{ $api_token }}';
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
// Uncomment the following to send cross-domain cookies:
// xhrFields: {withCredentials: true},
url: url
});
</script>
路线:
Route::group(['middleware' => ['auth:api']], function() {
Route::post('api/photos', '[email protected]');
});
你定义了Route :: get('category',['uses'=>'categoryController @ index']) 为什么你让ajax类型为'post'?这完全没有意义。 –
Post方法发送数据并接收连接到控制器被添加了时间。试试 –