使用php4如何将数组存储在隐藏的div中,以便jquery可以将其拾取然后将其转换为json对象?我试图将数据数组传递给gmap,以便我可以加载多个标记,但似乎无法弄清楚如何将php数组传递给jquery,然后将其转换为json对象。
我尝试使用php4的自定义json编码类并将php数组编码为json,问题是它吐出一堆垃圾字符并且似乎在jquery代码中导致错误。这是我在php中创建的数组:
$map_array[] = array('latitude' => $result_latitude,'longitude' => $result_longitude,'html' => $result_html,'title' => $result_name,'icon' => array('image' => '/pathtoicon' .$mapi .'.png','iconsize' => array(27,27)));
$map_json = $json->encode($map_array);
然后在jquery:
var mapcoords = $('#mapcoord').html();
$('#rmap').gMap(
{
zoom: 10,
markers:$.parseJSON(mapcoords)
}
);
当我这样做时,我收到此错误:
“SyntaxError:JSON.parse:JSON数据后出现意外的非空白字符”
如果我使用var mapcoords = $('#mapcoord')。text();
问题是,它删除了html。那么如何将php数组传递给jquery并能够保存html代码呢?
答案 0 :(得分:3)
为什么不用php创建javascript变量并将其设置在那里?
例如:
<?php
$obj = "{'test': 1}";
echo "<script type='text/javascript'>";
echo "var myString = " . $obj;
echo "</script>";
?>
现在可以通过javascript作为对象访问变量。
如果你不能这样做,你可以尝试使用jQuery.parseJSON将字符串转换为json对象。
希望它有所帮助!
你试过jQuery.parseJSON(myString)
吗?
答案 1 :(得分:0)
假设html页面和json数据在同一请求中从Web服务器发送到客户端,您应该在服务器端将必要的js写为php字符串。以下代码段应说明需要完成的工作:
$map_json = "var jsonData = " . $json->encode($map_array);
$map_json = '<script type="text/javascript">' . $map_json . '</script>';
echo $map_json;
变量jsonData应该可以在客户端中访问js片段。
答案 2 :(得分:0)
我会尝试这样的事情:
$json = json_encode($my_array);
echo <<<EOS
<script type="text/javascript">
my_global_js_var = $json
</script>
EOS;
由于JSON是有效的javascript,你应该得到一个带有json内容的变量。您甚至不需要隐藏的HTML元素。