2017-02-09 6 views
0

Ich möchte eine Rechnungsstruktur erstellen, wo ich einen Client auswählen kann und das nächste ausgewählte Formular zeigt mir alle Elemente des Clients, aber aus irgendeinem Grund habe ich Probleme damit.Abrufen einer JSON-Antwort in einer Blade-Ansicht - Laravel 5.3

Das ist mein route.php

Route::resource('bills', 'BillsController'); 
Route::get('bills/items','[email protected]'); 

Und das ist mein BillsController

private function items($request) { 
    try { 
     if ($request) { 
      $id = $request->client_id; 
      $items = Item::where('client_id', $id)->get()->pluck('code', 'id'); 

      return redirect()->json($items); 
     } else { 
      \Session::flash('error_message', 'Ups! Hemos tenido un error.'); 
      return redirect()->back(); 
     } 
    } catch (Exception $e) { 
     \Session::flash('error_message', 'Ups! Hemos tenido un error.'); 
      return redirect()->back(); 
    } 
} 

Und das ist das Skript in meine Klinge Ansicht:

<script> 
$(document).ready(function() { 

    $('#clients').change(function() { 
     var $client_id = $('#clients').val(); 
     console.log($client_id); 
     var $url = '{{ url('MyAdmin/bills/items') }}'; 
     console.log($url); 
     $.getJSON($url, {'client_id': $client_id}, function(resp) { 
      console.log(resp); //For some reason here the "resp" is not working 
      $.each(resp, function(key, answer) { 
       $('#items').append('<option value="'+answer.id+'">'+answer.code+'</option>'); 
      }); 
     }); 
    }); 
}); 

Irgendeine Idee? Danke vielmals!

Antwort

0

Das ist, weil es tatsächlich in } catch (\Exception $e) geht. Aber Sie geben hier auch keine JSON-Antwort zurück. Sie leiten um.

Das Problem ist, dass das Objekt redirect() keine ->json() Methode enthält, aber das response() Objekt tut. So ändern:

return response()->json($items); 

Auch in der Fehlerbehandlung, gibt einen 422 Fehlercode beim Antworten, so es wil die .error() auf Ihrem Versprechen auslösen.

return response(422)->json([$e->getMessage()]); 
+0

ich gerade versucht, funktioniert nicht :( –

+0

den Link direkt in Ihrem Browser @CarlosOrtega Zugriff Was passiert – Ohgodwhy

+0

'Reflection in Route.php Linie 333.? Methode App \ Http \ Controllers \ Backend \ BillsController: : show() existiert nicht 'Ich habe das –