2016-04-02 3 views
0

Ich versuche, Daten aus einer Datenbank mit vuejs Ajax Aufruf mit einem Plugin namens vue-resource abrufen. Unglücklicherweise enthält das json-Datenobjekt die HTML-Seite und nicht die tatsächlichen Daten aus der Datenbank. Kann mir bitte jemand sagen, was falsch ist? Dies ist mein Code:Vuejs ajax GET-Anfrage nicht Daten in Laravel 5.1 Blade-Vorlage

routes.php

<?php 
Route::get('find', '[email protected]'); 

fruitsctrl.php (Controller)

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Fruit; 
use App\Http\Requests; 
use App\Http\Controllers\Controller; 

class FruitsCtrl extends Controller 
{ 
    public function index(Request $req){ 
     $fruits = Fruit::all(); 
     return view('fruitsHome', $fruits); 
    } 
} 

fruit.php (Modell)

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Fruit extends Model 
{ 
    protected $fillable = [ 
      'id', 'name', 'type' 
    ]; 
} 

fruitshome.blade. php (view)

<head> 
     <meta id="token" content="{{ csrf_token() }}"> 
</head> 
<body> 
    <div class="row" id="vapp"> 
     <ul> 
      <li v-for="fruit in fruits"> 
       @{{ fruit.name }} 
       @{{ fruit.type }} 

      </li> 
     </ul> 
    </div> 
<body> 

app.js (Javascript)

Vue.http.headers.common['X-CSRF-TOKEN'] = document.querySelector('#token').getAttribute('content'); 
var v = new Vue({ 
    el : "#vapp", 
    ready :function() { 
     this.fetchFruits(); 
    }, 
    data : { 
     fruit : {id:'', name:'', type:''}, 
     fruits : [] 
    }, 
    methods : { 
     fetchFruits : function(){ 
      this.$http.get('/find').then(function(res){ 
       this.fruits = res; 
      },function (data){ 
       console.log(error ...); 
      }); 
     } 
    } 
}); 

Antwort

0

Ich glaube, Sie Tabellennamen in das Modell wie folgt festlegen müssen:

class Fruit extends Model 
{ 

    protected $table = 'fruits'; 
    protected $fillable = [ 
     'id', 'name', 'type' 
    ]; 
} 

Sie müssen auch Index-Methode wie folgt aktualisieren:

public function index(Request $req){ 
    $fruits = Fruit::all(); 
    return view('fruitsHome')->withFruits($fruits); 
} 

und schließlich die Klinge aktualisieren:

 <li v-for="fruits in fruit"> 
      @{!! $fruits->name !!} 
      @{!! $fruits->type !!} 

     </li> 

Lassen Sie mich wissen, wenn es Sie

+0

Vielen Dank für Ihre Antwort. Ich habe Ihren Vorschlag versucht, aber es funktioniert nicht. Ich erhalte eine Fehlerausnahme in illuminates \ View \ View.php. Der Fehler ist ein ungültiger Offset-Typ ... – DBoonz

1

hilft Du bist gerade einen Blick von Ihrem Controller Rückkehr:

class FruitsCtrl extends Controller 
{ 
    public function index(Request $req){ 
     $fruits = Fruit::all(); 
     return view('fruitsHome', $fruits); 
    } 
} 

Stattdessen können Sie die Eloquent Ergebnisse direkt zurückkehren und sie werden ausgegeben als JSON:

class FruitsCtrl extends Controller 
{ 
    public function index(Request $req){ 
     $fruits = Fruit::all(); 
     return $fruits; 
    } 
}