AJAX发布不向laravel控制器发送数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AJAX发布不向laravel控制器发送数据相关的知识,希望对你有一定的参考价值。
也许这是一个非常常见的主题,但我找不到任何解决方案!,我正在开发的应用程序是在Laravel 5.0下,我需要从jquery ajax发送一些数据到laravel控制器,我已经按照this教程来使用ajax发布数据,我已经按照步骤进行了全局配置,因此我有一个带有csrf令牌的元数据,当我使用ajax将发送请求发送到url时,它只是发送令牌!但我发送的数据都没有!
这是我的ajax函数(我使用虚拟数据来测试它):
$.ajax( {
url : '/reservacion/paso-uno/enviar',
method : 'post',
data : { name: "John", location: "Boston" }
} );
但是当我dd( Request :: all());在post func我只得到令牌,如果我检查表头数据我只得到这个:
这是带有csrf的元标记:
<meta name="_token" content="{{{ csrf_token() }}}"/>
这是全局ajax设置:
$.ajaxSetup({
headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
});
大新闻
不知道为什么,也不知道怎么样,我想这只是一个缓存问题,但是上面的配置它会发送数据,但只有当我有一个<input type='submit' >
并在jquery中设置click事件时才会发生,因为如果我设置了它提交事件,它在浏览器路径中使用查询字符串重新加载页面。
现在问题是没有达到控制器的功能......当我点击按钮没有任何反应时,数据被发送但它没有到达laravel控制器。
我希望这能帮到您。
设置元标记如下
<meta name="csrf-token" content="{{ csrf_token() }}">
设定路线
Route::get('/your/url/goes/here',
[
'uses' => 'TestController@testFunction'
]);
设置控制器功能
在顶部use Input;
public function iddtest()
{
print_r(Input::all());
}
请求如下
$.ajax({
data: {data1:'data1',data2:'data2'},
url: '/your/url/goes/here',
type: 'POST',
beforeSend: function (request) {
return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
},
success: function(response){
console.log(response);
}
})
html Form
在表单的某处添加CSRF令牌
<meta name="csrf-token" content="{{ csrf_token() }}">
Route
添加帖子路线
Route::post('/path/to/ajax-form-process', 'FormController@processor');
Form process method
class FormController extends Controller{
public function processor(Request $request){
$input = $request->all();
//Do other processes
return '200'; //Use any string that is appropriate
}
}
jQuery Ajax
在您的JS / jQuery脚本中添加以下内容
$.ajax({
type: "POST",
url: 'path/to/ajax-form-process',
data: {
data1: 'data1',
data2: 'data2',
data3: 'data3'
},
success: function(html){
console.log(html);
}
});
你可以将_token
作为数据集的一部分传递吗?
$.ajax( {
url : '/reservacion/paso-uno/enviar',
method : 'post',
data : { "_token" : $('meta[name=_token]').attr('content'), name: "John", location: "Boston" }
} );
请尝试在路线中将您的方法更改为GET。然后使用Input :: all()获取内容;
- 我不明白你在Ajax中的'url'参数。网址应该是这样的:“http://serveradrress/yourroute”
- 最重要的是你的成功,错误和完整的功能在哪里?
- 您是在向api提交请求还是内部请求?
- 确保使用post方法:
Route::post('//your postroute','//controller@//method');
- 在您的控制器中,您应该有课程和:
public function(Request $request){ return response()->json(dd($request->all())); }
以上是关于AJAX发布不向laravel控制器发送数据的主要内容,如果未能解决你的问题,请参考以下文章
当通过 Ajax 将数据发送到 Laravel 中的控制器时,数据为空