如何从控制器获取记录到 Ajax laravel 5.2
Posted
技术标签:
【中文标题】如何从控制器获取记录到 Ajax laravel 5.2【英文标题】:How to Get record from controller to Ajax laravel 5.2 【发布时间】:2016-06-19 07:46:17 【问题描述】:当我记录要更新的数据库表中的记录时,我想要问候和尊重,但不幸的是,我没有做任何无法获取 ID 并注入 AJAX 和 AJAX 的事情,我想要控制器和我的金额之间的关系从数据库和表中读取。
我的控制器:
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'));
我的路线:
Route::group(['middleware' => 'web'], function ()
Route::auth();
Route::get('category',['uses'=>'categoryController@index']);
);
Route::group(['middleware' => 'web'], function ()
Route::auth();
Route::get('categoryAjax', ['as'=>'categoryAjax','uses'=>'categoryController@indexAjax']);
);
脚本:
<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' => 'categoryController@create']);
);
【问题讨论】:
您定义了 Route::get('category',['uses'=>'categoryController@index']) 以及为什么要使用 ajax type: 'post' ?这根本没有意义。 添加了向控制器发送数据和接收连接的 Post 方法。尝试 【参考方案1】:在 Laravel 5.2 中,中间件有 web、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', 'FileController@storeApi');
);
【讨论】:
谢谢你的好意不麻烦剩下的代码? 我不确定。但是你可以修改路线并尝试一下。 O______O 我改变了路线,但还是失败了。 你能检查 indexAjax 有没有工作?尝试在函数中回显某些内容? 这不是我的问题 :(【参考方案2】:通过此代码解决了我的问题。但是从我的脚本中删除 $.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。
【讨论】:
以上是关于如何从控制器获取记录到 Ajax laravel 5.2的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 将 VerifyCsrfToken 添加到控制器获取 ajax 请求