如何将php数组传递给jquery并转换为json?

时间:2012-08-06 13:46:47

标签: php jquery arrays json

使用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代码呢?

3 个答案:

答案 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元素。