解决外部js获取隐藏域值中json数据错误问题

php javascript php 1645      收藏
解决外部js获取隐藏域值中json数据错误问题

在项目开发中,做微信菜单管理功能的时候,微信菜单数据是以json格式保存在数据库中的,如下:

{
	"menu": {
		"button": [{
			"name": "扭蛋",
			"sub_button": [{
				"name": "扭蛋商城",
				"type": "view",
				"url": "http:\/\/www.jh-brands.com\/m"
			}]
		}, {
			"name": "游戏",
			"sub_button": [{
				"name": "扭蛋游戏",
				"url": "http:\/\/www.jh-brands.com\/m",
				"type": "view"
			}]
		}, {
			"name": "推荐文章",
			"sub_button": [{
				"type": "view",
				"name": "搜狗搜索",
				"url": "http:\/\/www.soso.com\/"
			}]
		}]
	}
}

当需要编辑微信菜单的时候,由于是采用的外部js方法,没有办法把php的值直接赋值为到js中,所以考虑先把json数据存放到页面总的隐藏域中,然后在外部js中通过获取属性方法,获取到隐藏域中保存的微信菜单json数据,但是在实际使用的过程中,发生了错误,外部js获取到的隐藏域的值只有"{",后面的值都无法获取到。

这个时候需要把json数据转化成json字符串,使用方法为

    <input type="hidden" name="menu" id="menu" value="">
    <script type="text/javascript">
      var menu = document.getElementById("menu");
      var menu_list = <?=$menu;?>;
      menu.setAttribute('value',JSON.stringify(menu_list));
    </script>

这里我采用js向隐藏域中赋值的方法,将菜单数据保存到隐藏域中。

然后在外部js中重新将json字符串转换成json格式即可:

    var tmp_obj = $("[name='menu']").val();
    var obj = JSON.parse(tmp_obj);

自学php博客