将JSON编码的PHP变量发送给JS

时间:2014-08-07 05:21:41

标签: javascript php jquery json

我正在尝试将PHP变量发送到我的javascript。为了做到这一点,我使用json对php变量进行编码,使用我的控制器将其发送到我的视图,将其用作隐藏html表单中的值,然后使用js拉取值,使用parseJSON获取最终产品。

HTML (我正在使用laravel,括号等同于php标记):

<input type="hidden" id="js-helper-artist-likes" name="js-helper-artist-likes" value="{{$artist_likes}}">

JS

var artist_likes = $('#js-helper-artist-likes').val();
    console.log(artist_likes);

在页面源代码中,我看到该值是用json字符串填充的,但是当我从上面的js中将它打印到控制台时,所有显示的内容都是:[{

我不确定为什么会这样。

我想表演:

var artist_likes_decoded = $.parseJSON(artist_likes);

在JS中获取解码变量,但如果没有编码的字符串在js中的artist_likes变量中正确显示,则这是不可能的。

任何想法我做错了什么?谢谢。

3 个答案:

答案 0 :(得分:0)

<input type="hidden" id="js-helper-artist-likes" name="js-helper-artist-likes" value="{{ echo $artist_likes}}">

答案 1 :(得分:0)

您可以使用:

 <input type="hidden" id="js-helper-artist-likes" name="js-helper-artist-likes" value="<?= json_encode($artist_likes) ?>">

答案 2 :(得分:0)

    <?php
      $yourVariable ="something";
      $arr = json_encode(array("name"=>$yourVariable));
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>

<body>
<input type="hidden" id="js-helper-artist-likes" name="js-helper-artist-likes" value='<?php echo $arr; ?>'>
<script>
$(document).ready(function(){
var artist_likes = $('#js-helper-artist-likes').val();
console.log($.parseJSON(artist_likes));
});

</script>
</body>
</html>