2017-04-21 162 views
1

我有通过Ajax在laravel
发送的请求的形式 这从我的控制器片断返回输入作为数组的键名laravel请求返回与空值

use Illuminate\Http\Request; 
class StatusController extends Controller { 
    public function postStatus(Request $request) { 
    if ($request->ajax()) { 
     dd($request->input('statusBody')); 

然而,这与返回一个数组statusBody与空值的键名

use Illuminate\Http\Request; 
class StatusController extends Controller { 
    public function postStatus(Request $request) { 
    if ($request->ajax()) { 
     dd($request->input()); 

这是返回结果

array:1 [▼ 
    "This_is_a_sample_status" => null 
] 

最后返回正确的值

use Illuminate\Http\Request; 
class StatusController extends Controller { 
    public function postStatus(Request $request) { 
    if ($request->ajax()) { 
     $val = $request->input('statusBody'); 
     dd(array_search($val, $request->all())); 

我的问题是:为什么会出现这种情况?
为什么$request->input('name')没有按预期返回一个值?
UPDATE:
这也是阿贾克斯功能,成功记录想要的结果到控制台

var statusBody = $('#statusBody').val(); 
     $.ajax({ 
     type: "POST", 
     url: 'status', 
     data: statusBody, 
     success: function(data){ 
      console.log(statusBody); 
     } 
     }); 
+1

你能更新与JSON/Ajax代码块中的问题?通常情况下,我认为它应该可以使用'$ request-> input('name');' –

+0

我更新了我的问题@AntonisTsimourtos,尽管我没有看到它是如何相关的,只要它将数据传递给控制器并成功将想要的结果记录到控制台 –

+0

尝试将'data:statusBody'更改为'data:statusBody.serialize(),'。也许可以添加'dataType:'json',' –

回答

0

我试图重现一个新鲜laravel应用,在那里我发现了什么不对的问题。在阿贾克斯功能
data参数期望像这样

var statusBody = $('#status').val(); 
     var dataString = "status="+statusBody; 
     $.ajax({ 
     type: "POST", 
     url: 'status', 
     data: dataString 
     }); 

感谢安东尼指出阿贾克斯一dataString调用