【问题标题】:Laravel - cant retrive data from ajax to controllerLaravel - 可以从 ajax 检索数据到控制器
【发布时间】:2016-12-14 19:57:40
【问题描述】:

我正在尝试将数据从 ajax 检索到控制器,但似乎 ajax 没有传递任何数据。

代币元数据:

<meta name="_token" content="{!! csrf_token() !!}" />

Javascript:

$.ajaxSetup({
   headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
});    

// AJAX Call

$.ajax({
   method: "POST",
   url: "someurl",
   data: JSON.stringify({'sample': 'test'}),
   dataType: "json",
   contentType: "application/json",
   success: function(data) {
       console.log(data);
   },
   error: function(err) {
       console.log(err);
   }
});

路线:

Route::post('/someurl', 'AdminController@updateUser');

控制器:

public function updateUser() {

   $myTest = Input::all();

   return response()->json(json_encode($myTest));
}

我可以毫无问题地调用控制器,但是当我添加Input:all() 时,我得到一个500 server error。请帮助我,谢谢!

【问题讨论】:

  • 检查您的服务器日志以获取更多详细信息,通常当您看到 500 错误时,您会想要这样做。
  • 通过 echo $myTest 或 print_r $myTest 检查它们是否有任何价值?

标签: php ajax laravel post controller


【解决方案1】:

如果我错了,请纠正我,但据我所知,Input::all() 由 Laravel Requests 工作。您不是在处理请求,而是处理纯原始 POST 数据,因此 Input::all() 不起作用。尝试使用$myTest = $_POST['sample'] 访问它,看看是否可以完成这项工作。哦,为了您的方便,如果您使用 Blade 模板引擎,我会选择以下内容:

$.ajax({
   method: "POST",
   url: "someurl",

   data: {
       'sample': 'test', 
        '_token' : '{{csrf_token()}}'
   },

   dataType: "json",
   contentType: "application/json",
   success: function(data) {
    console.log(data);
},
   error: function(err) {
    console.log(err);
}
});

去掉 ajaxsetup 和 csrf 字段

【讨论】:

    猜你喜欢
    • 2017-06-23
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多