将数据传递给javascript,但是反斜杠很多

时间:2020-06-18 14:24:00

标签: javascript php laravel

我正在将数据从控制器传递到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>

如何删除JSON数据中的反斜杠?

注意:事件列的数据类型为JSON

我正在使用LARAVEL 7

谢谢

enter image description here

4 个答案:

答案 0 :(得分:1)

您需要在控制器中解码json

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

答案 1 :(得分:0)

如果您可以控制后端代码,即您正在向后端发送请求,则可以添加JSON_UNESCAPED_SLASHES作为json_encode函数的第二个参数以停止转义字符,因此应该看起来像json_encode($res, JSON_UNESCAPED_SLASHES)

如果必须使用Javascript处理,则可以使用JSON.parse(string)并迭代数组中的每个条目。

您可能会这样使用某事;初始化一个新数组newData并将解析的数据推入其中:

var newData = []
data.forEach(element => {
  newData.push(JSON.parse(element))
})

答案 2 :(得分:0)

根据Laravel Documentation

呈现JSON

有时您可能会将数组传递给视图,目的是 将其呈现为JSON以便初始化JavaScript变量。对于 例如:

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

但是,您可以使用代替手动调用json_encode @json Blade指令。 @json指令接受相同的参数 作为PHP的json_encode函数:

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

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

答案 3 :(得分:0)

添加即可解决

protected $casts = [
        'event' => 'array'
    ];