Laravel 5.2:如何使用ajax将数据传递给控制器
问题描述:
嗨,我是Laravel的新手,我试图使用ajax调用将一些数据传递给控制器。Laravel 5.2:如何使用ajax将数据传递给控制器
路线
Route::post('/category', '[email protected]');
控制器
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);
}
});
使用上述我的代码GEF以下错误:
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', '[email protected]');
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;
}
});
});
});
看,如果有帮助。
+0
嗨,戴夫......它的作品! – Robert
答
只需更换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>
你打什么网址?转到网络标签,看看是否有任何问题。 –
试试url:'/ category' – rchatburn
另外,在执行ajax请求时,将csrf标记添加到数据参数中。 –