Laravel - 可以从 ajax 检索数据到控制器

Posted

技术标签:

【中文标题】Laravel - 可以从 ajax 检索数据到控制器【英文标题】:Laravel - cant retrive data from ajax to controller 【发布时间】: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 检查它们是否有任何价值? 【参考方案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 字段

【讨论】:

以上是关于Laravel - 可以从 ajax 检索数据到控制器的主要内容,如果未能解决你的问题,请参考以下文章

从数据库中检索数据并将其发送到 laravel 中的 ajax

如何在 laravel php 中使用 ajax 根据日期范围从 mysql 数据库中检索数据?

PHP Laravel:Ajax 无法检索数据(无属性)

onclick 使用 ajax laravel 从数据库中获取数据

在 Laravel 4 中从 Jquery Ajax Json 中检索值

如何调用ajax从数据库中检索数据