Saya melewati array dari controller saya.

Sekarang, saya memasukkan kode ini ke dalam Laravel 6.* Blade View saya,

<script>
    var app = <?php echo json_encode($array); ?>;
</script>

Ini bekerja dengan baik.

Namun, jika saya meletakkan bagian baris yang sama (atau salah satu dari baris berikut) di dalam file app.js kustom saya, ini tidak akan berfungsi.

var app = <?php echo json_encode($array); ?>;

var app = {!! json_encode($array->toArray()) !!};

var app = '<?php echo json_encode($array); ?>';

Setiap kali saya mendapatkan kesalahan sintaks yang tidak valid.

Saya tidak yakin apakah ini pertanyaan yang valid untuk StackOverflow, tetapi saya sudah mencoba semua solusi serupa lainnya dan tidak ada yang berfungsi untuk saya.

1
Scarecrow 27 Oktober 2019, 00:04

2 jawaban

Jawaban Terbaik

Itu karena Anda tidak memiliki akses untuk menulis kode php di file js atau Anda dapat menggunakan Ajax untuk mendapatkan variabel php.

Dalam pernyataan Anda jika Anda memasukkan kode Anda ke file blade Anda sebelum memasukkan file app.js, Anda akan bisa mendapatkan variabel app di file js Anda. Mantan:

<script>
var app = @json($array)
</script>
<script src="path to your app js file"></script>

Dan sekarang di file js aplikasi Anda jika Anda mencetak variabel app, Anda akan melihat hasilnya console.log(app); di file app.js Anda

1
Mohammed Aktaa 27 Oktober 2019, 02:03

Satu hal yang dapat Anda lakukan adalah memindahkan javascript ke template dan membuat rute ke sana sebagai:

Route::get('/app.js', function () {
    $result = view('app', ['array' => [1,2,3,5,8]]);
    return Response::make($result, 200)
        ->header('Content-Type', 'application/javascript');
});

Kemudian di sumber\tampilan

<script>
    var app = <?php echo json_encode($array); ?>;
</script>

Cara umum untuk melakukan ini adalah membuat titik akhir yang hanya mengembalikan json dan kemudian menggunakan mis. ambil perpustakaan api atau axios di sisi klien.

Sesuatu seperti ini:

Route::get('/app', function () {
    return [1,2,3,5,8];
});

<script>
    fetch(endPointUrl("/app")).then(response => {
        console.log(response);
    }).catch(error => {
        console.error(error);
    })
</script>

Di mana endPointUrl hanyalah fungsi pembantu yang membuat url lengkap.

0
Edin Omeragic 26 Oktober 2019, 21:42