Передать данные в javascript, но получилось так много обратной косой черты - PullRequest
0 голосов
/ 18 июня 2020

Я передаю данные со своего контроллера на javascript.

public function index()
    {
        $events = Eventcalendar::get()->pluck('event');
        return view('eventcalendar.index',compact('events'));
    }

это я делаю в лезвии

<script type="text/javascript">
  var data = {!! $events !!}

  console.log(data) //the result is in the screenshot
</script>

как мне удалить backsla sh в данных JSON?

Примечание: тип данных столбца событий - JSON

Я использую LARAVEL 7

Спасибо

enter image description here

Ответы [ 4 ]

1 голос
/ 18 июня 2020

нужно декодировать ваш json в контроллере

  public function index()
        {
            $events  = json_decode(Eventcalendar::get()->pluck('event'));
            return view('eventcalendar.index',compact('events'));
        }
0 голосов
/ 20 июня 2020

Решил, добавив

protected $casts = [
        'event' => 'array'
    ];
0 голосов
/ 18 июня 2020

Согласно Laravel Документация

Рендеринг JSON

Иногда вы можете передать массив в ваше представление с помощью намерение отобразить его как JSON для инициализации переменной JavaScript. Например:

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

Однако вместо ручного вызова json_encode вы можете использовать директиву @ json Blade. Директива @ json принимает те же аргументы, что и функция json_encode PHP:

<script>
    var events = @json($events);

    var events = @json($events, JSON_PRETTY_PRINT);
</script>
0 голосов
/ 18 июня 2020

Если у вас есть контроль над бэкэнд-кодом, IE, вы отправляете запрос в свой бэкэнд, вы можете добавить JSON_UNESCAPED_SLASHES в качестве второго параметра функции json_encode, чтобы остановить экранирование символов, поэтому он должен выглядеть так: json_encode($res, JSON_UNESCAPED_SLASHES).

Если вам нужно обработать это в Javascript, вы можете использовать JSON.parse(string) и перебирать каждую запись в вашем массиве.

Вы можете использовать что-то вроде этого; инициализировать новый массив newData и pu sh проанализировать в него данные:

var newData = []
data.forEach(element => {
  newData.push(JSON.parse(element))
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...