Laravel 5.2:如何使用 ajax 将数据传递给控制器
Laravel 5.2: how to pass data to controller using ajax
嗨,我是 Laravel 的新手,我正在尝试使用 ajax 调用将一些数据传递给控制器。
路线
Route::post('/category', 'FrontendController@category');
控制器
public function category(Request $request){
$data = $request->all();
}
Ajax 来电
var name= 'John';
$.ajax({
method: 'post',
url: '{{url("/category")}}',
data: {'name' : name},
success: function(response){
console.log(response);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(JSON.stringify(jqXHR));
console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
}
});
使用上面的代码我得到了以下错误:
MethodNotAllowedHttpException RouteCollection.php 第 218 行
试试这个:
Step 1: Create BASE_URL in constructor of Controller
public function __construct() {
if (!defined('BASE_URL')) define('BASE_URL', url('/') . '/');
}
Step 2: Define Route
Route::post('category', 'CategoryController@postCategory');
Step 3: Add "BASE_URL" to HTML and implement that in Script.
<script>
var APP = APP || {};
APP.baseUrl = "{{ BASE_URL }}";
window.Laravel = <?php echo json_encode([
'csrfToken' => csrf_token(),
]); ?>
</script>
然后,
$(function(){
var loadMoreRequest = null;
$('#formSubmit').on('click', function(){
if (loadMoreRequest !== null) {
return;
}
loadMoreRequest = $.ajax({
url: APP.baseUrl + '/category',
data: {'_token': window.Laravel.csrfToken},
type: 'POST',
asyn: false,
success: function (data) {
console.log('Yay!')
loadMoreRequest = null;
},
error: function() {
loadMoreRequest = null;
}
});
});
});
看看,是否有帮助。
只需将 method: 'post'
替换为 type: 'post'
,它就会开始工作
并为每个 ajax 请求添加 csrf 令牌遵循此 Laravel CSRF Token
在您的 head
部分添加此元标记
<meta name="csrf-token" content="{{ csrf_token() }}">
然后将其添加到您的 javascript 部分
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
</script>
嗨,我是 Laravel 的新手,我正在尝试使用 ajax 调用将一些数据传递给控制器。
路线
Route::post('/category', 'FrontendController@category');
控制器
public function category(Request $request){
$data = $request->all();
}
Ajax 来电
var name= 'John';
$.ajax({
method: 'post',
url: '{{url("/category")}}',
data: {'name' : name},
success: function(response){
console.log(response);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(JSON.stringify(jqXHR));
console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
}
});
使用上面的代码我得到了以下错误:
MethodNotAllowedHttpException RouteCollection.php 第 218 行
试试这个:
Step 1: Create BASE_URL in constructor of Controller
public function __construct() {
if (!defined('BASE_URL')) define('BASE_URL', url('/') . '/');
}
Step 2: Define Route
Route::post('category', 'CategoryController@postCategory');
Step 3: Add "BASE_URL" to HTML and implement that in Script.
<script>
var APP = APP || {};
APP.baseUrl = "{{ BASE_URL }}";
window.Laravel = <?php echo json_encode([
'csrfToken' => csrf_token(),
]); ?>
</script>
然后,
$(function(){
var loadMoreRequest = null;
$('#formSubmit').on('click', function(){
if (loadMoreRequest !== null) {
return;
}
loadMoreRequest = $.ajax({
url: APP.baseUrl + '/category',
data: {'_token': window.Laravel.csrfToken},
type: 'POST',
asyn: false,
success: function (data) {
console.log('Yay!')
loadMoreRequest = null;
},
error: function() {
loadMoreRequest = null;
}
});
});
});
看看,是否有帮助。
只需将 method: 'post'
替换为 type: 'post'
,它就会开始工作
并为每个 ajax 请求添加 csrf 令牌遵循此 Laravel CSRF Token
在您的 head
部分添加此元标记
<meta name="csrf-token" content="{{ csrf_token() }}">
然后将其添加到您的 javascript 部分
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
</script>