1

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

4

3 回答 3

4

为什么不简单地用 php 创建 javascript 变量并将其设置在那里?

例如:

<?php

   $obj = "{'test': 1}";

    echo "<script type='text/javascript'>";
    echo "var myString = " . $obj;
    echo "</script>";
?>

现在可以通过 javascript 作为对象访问该变量。

如果您不能这样做,您可以尝试使用jQuery.parseJSON将字符串转换为 json 对象。

希望能帮助到你!

你试过了jQuery.parseJSON(myString)吗?

于 2012-08-06T13:56:37.650 回答
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;

客户端中的 js 片段应该可以访问变量 jsonData。

于 2012-08-06T13:56:48.027 回答
0

我会尝试这样的事情:

$json = json_encode($my_array);
echo <<<EOS
<script type="text/javascript">
     my_global_js_var = $json
</script>
EOS;

Since JSON is valid javascript, you should get a variable with the json content. You even do not need an hidden HTML Element.

于 2012-08-06T14:02:12.280 回答