Ausgabe
Ich möchte eine Ansicht rendern, ohne meine Seite zu aktualisieren, also verwende ich Ajax und rendere die Ansicht. Es sieht so aus, als würden meine $scores nicht funktionieren, sollte es ein Array sein oder nicht? Ich habe etwas darüber gelesen, dass es JSON-Daten sein sollten?
Regler:
$scores = DB::table('scores')->select('teamname', 'score')->get();
$table_view = view('score_table.blade.php', ['scores'=>$scores])->render();
return response()->json(['succes' => true, 'table_view' => $table_view]);
Siehe score_table.blade.php
<table>
<tr>
<th> Teamname </th>
<th> Score </th>
</tr>
@foreach($scores as $score)
<tr>
<td> {{ $score->teamname }} </td>
<td> {{ $score->score }} </td>
</tr>
@endforeach
</table>
Ajax-Funktion
success:function(data){
$('#scoreresult').html(data.table_view);
}
Ich war mir ziemlich sicher, dass es funktionieren würde, aber es hat nicht funktioniert :(. Wer kann mir mit einer Lösung helfen? Vielen Dank!
Lösung
Ihre Logik ist in Ordnung, aber es sind nur wenige Änderungen erforderlich.
Sie müssen nicht den vollständigen Namen der Blade-Datei übergeben und können compact verwenden.
Regler:
$scores = DB::table('scores')->select('teamname', 'score')->get();
$table_view = view('score_table', compact('scores'))->render();
return response()->json(['succes' => true, 'table_view' => $table_view]);
Bestätigen Sie auch, ob Sie den Inhaltstyp als JSON in der Ajax-Anforderung senden.
dataType: "json",
success:function(data){
$('#scoreresult').html(data.table_view);
}
Beantwortet von – Satyandra Shakya
Antwort geprüft von – Katrina (FixError Volunteer)