2016-05-05 2 views
0

Я пытаюсь отправить от Laravel ответ на запрос AJAX.AJAX Отправить массив как ответ от Laravel

public function infoRoute(Request $request) 
    { 
     // Get info 
     $ship_id = $request->ship_id; 
     $startDate = $request->datepicker_start; 
     $endDate = $request->datepicker_end; 

     // Get all the locations between those dates 
     $routeArray = $this->measurementRepository->getCoordinates($ship_id, $startDate, $endDate); 

     $ship = $this->shipRepository->getShipForId($ship_id); 
     $info = $this->createRouteArrayForShip($ship, $routeArray); 

     if($request->ajax()) { 
      return response()->json(json_encode($info)); 
     } 
    } 

    protected function createRouteArrayForShip($ship, $routeArray) 
    { 
     $info['type'] = "showRoute"; 

     $index = 0; 

     foreach($routeArray as $coordinates) 
     { 
      $info['info']['route']['loc'. $index] = $coordinates; 
      $index++; 
     } 

     $info['info']['shipInfo'] = $ship; 

     //dd($info); 
     return $info; 
    } 

Когда я получаю информацию и обрабатываю ее с помощью jQuery, все показывает, кроме пустого маршрута.

Спасибо,

+0

если вы используете браузер инструменты для разработчиков .. Какие данные вы видите, возвращаясь в ответ? – Dale

+0

У вас есть многомерный массив там .. –

+0

Попробуйте вернуть его как JSON – kejsu

ответ

2

Метод response()->json() преобразует заданный массив в JSON с помощью функции PHP json_encode() позади сцены. Для этого необходимо удалить json_encode() из-за звонка response()->json().

В основном это должно выглядеть следующим образом

return response()->json($info); 
+0

Спасибо! Я сделал это, но он все еще не работает. Я думаю, что это имеет какое-то отношение к тому, что '$ info' не содержит координат из маршрута. Он отправляется пустым. Если я возвращаю ответ 'dd ($ info)', маршрут пуст. Но когда я вызываю функцию createRouteArrayForShip, он фактически сохраняет записи в массиве –

Смежные вопросы