2017-10-05 63 views
3

我試圖將表單輸入提交爲json格式。將json數據解碼爲數組後,我無法訪問數組。將json數據解碼爲數組並在PHP中訪問數組(Laravel)

{ 
    "info": { 
     "q_title": "hello", 
     "q_description": "ddd", 
     "q_visibility": "1", 
     "start_date": "Thu, 05 Oct 2017 06:11:00 GMT" 
    } 
} 

這是我的json數據。我的Laravel控制器如下:

public function store_quiz(Request $request) 
    { 
     $data = json_decode($request->getContent(), true); 

     $input = $arrayName = array(
      'title' => $data["info"]["q_title"], 
     ); 

     CreateQuiz::create($input); 

     $redirect = '/'; 
     return $redirect; 
    } 

不幸的是$data["info"]["q_title"]返回NULL。如何訪問我的JSON的「q_tittle」?

+0

可以的print_r()$請求 - >的getContent());.可能是null – iCoders

+0

向我們顯示$ data,所以我們可以看到你的數組 – Stender

+0

你的請求正文不是有效的json – user2659982

回答

0

只需在json_decode之後訪問您的數據,而無需第二個參數。

$data->info->q_title 

並通過使用第二個參數爲true,它會將您的對象轉換爲數組。

$data = json_decode($request->getContents(),true) //then use 
$data['info']['q_title'] 

,如果你沒有在$request->getContents()得到任何東西,那麼問題在於,你要發送的請求。

此外,檢查如何檢索JSON有效載荷

Laravel 5: Retrieve JSON array from $request

Posting JSON To Laravel

+0

不知道爲什麼我在這裏得到-2。 –

+0

@ Dhaval.he給出true如果爲TRUE,則返回的對象將被轉換爲關聯數組。這可能是下投票的原因 – iCoders

+0

@DhavalPurohit查看文檔http://php.net/manual/en/function.json -decode.php( - ; – Neodan

1

也許$request->getContent()內容是從你的例子不同,這兩個環節,因爲對我來說它的工作原理。

嘗試檢查你在$request->getContent()中有什麼。

例子:

<?php 
$source = '{ 
    "info": { 
     "q_title": "hello", 
     "q_description": "ddd", 
     "q_visibility": "1", 
     "start_date": "Thu, 05 Oct 2017 06:11:00 GMT" 
    } 
}'; 
$data = json_decode($source, true); 
echo $data['info']['q_title']; 
+0

是的。其實問題出在$ request-> getContent()。@Neodan –

0

解決方案:

我的數據是在jQuery的保存在var data

要發佈的數據我用

$.ajax({ .... data: {data: data} .... }); 

,而不是

$.ajax({ .... data: data .... }); 

所以我從$request->getContent()得到了意想不到的價值。

0

這裏是這樣做的更加Laravel風格的方法:

public function store_quiz(Request $request) 
{ 
    $input = $arrayName = array(
     'title' => $request->input('info.q_title'), 
    ); 

    CreateQuiz::create($input); 

    $redirect = '/'; 
    return $redirect; 
} 

,並確保您的JavaScript應用程序的Content-Type頭設置爲application/json。 Laravel將爲您提供json_decode()


來源:https://laravel.com/docs/5.5/requests(JSON檢索輸入值)