JSON-ответ возвращает HTML внутри цикла

-2

У меня есть эта функция в Laravel 5.1

public function calcolaKilometri()
    {

    $partenza = Input::get('partenza');
    $destinazione = Input::get('destinazione');
    $distanceMatrix = new DistanceMatrix(new Client(), new GuzzleMessageFactory()); 
    $response = $distanceMatrix->process(new DistanceMatrixRequest(
        [$partenza], 
        [$destinazione]
    )); 

        foreach ($response->getRows() as $row) {
        foreach ($row->getElements() as $element) {
        $distance = $element->getDistance();
        $text = $distance->text;
        $value = $distance->value;
        $data = ['text' => $text, 'value' => $value];       
        return \Response::json($data);  
            }       
        }


    }

необходимо вернуться к данным Ajax JSON, но эта функция возвращает обычный HTML-ответ, потому что мы находимся в петле forech. Как я могу сделать трюк?

  • 0
    «но эта функция возвращает простой HTML-ответ, потому что мы находимся в цикле forech». без разницы.
  • 0
    Конечно, это проблема. Анализ returnif для получения результата 2 цикла foreach, но результат равен 1. Внутри каждого цикла. Мне нужно передать переменную вне цикла
Теги:
laravel-5.1

3 ответа

0

Попробуй это...

$json = json_encode($data);
return \Response::json($json);
-1

Решено использовать сеансы. Если у кого-то такая же проблема:

public function calcolaKilometri()
    {

    $partenza = Input::get('partenza');
    $destinazione = Input::get('destinazione');
    $distanceMatrix = new DistanceMatrix(new Client(), new GuzzleMessageFactory()); 
    $response = $distanceMatrix->process(new DistanceMatrixRequest(
        [$partenza], 
        [$destinazione]
    )); 
    foreach ($response->getRows() as $row) {
        foreach ($row->getElements() as $element) {
            $text = $element->getDistance()->getText();
            $value = $element->getDistance()->getValue();
            \Session::put('testo', $text);
            \Session::put('valore', $value);
        }       
    }

// Return the data as JSON only when we've filled it with everything
    $testo = \Session::get('testo');
    $valore = \Session::get('valore');
    $result = ['text' => $testo, 'value' => $valore];       
        return \Response::json($result); 

    }
-1

Я не уверен, что полностью понимаю, что вы говорите, но я предполагаю, что вы хотите вернуть все данные, найденные при переходе через ваш результирующий набор в один ответ JSON.

Попробуйте что-то вроде этого:

// Your previous code...

// Initialise a $data array here, that we're going to fill with data
$data = [];

foreach ($response->getRows() as $row) {
    foreach ($row->getElements() as $element) {
        $distance = $element->getDistance();
        $text = $distance->text;
        $value = $distance->value;

        // Append the new set of data to your array
        $data[] = ['text' => $text, 'value' => $value];       
    }       
}

// Return the data as JSON only when we've filled it with everything
return response()->json($data);
  • 0
    я уже попробовал и получил пустое значение
  • 0
    Ваша проблема не ясна

Ещё вопросы

Сообщество Overcoder
Наверх
Меню