2012-08-06 100 views
0

如何使用php4如何将数组存储在隐藏的div中,以便jquery可以将其拾取并将其转换为json对象?我试图将数组数据传递给gmap,以便我可以加载多个标记,但似乎无法弄清楚如何将php数组传递给jquery,然后将其转换为json对象。如何将php数组传递给jquery并变成json?

我试过使用php4的自定义json编码类,并将php数组编码为json,问题是它吐出一堆垃圾字符,并且似乎在jQuery代码中导致错误。 jQuery中

$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); 

然后:这里是阵列IM3 PHP创建

var mapcoords = $('#mapcoord').html(); 

     $('#rmap').gMap(
       { 
        zoom: 10, 
        markers:$.parseJSON(mapcoords) 
       } 

     ); 

当我这样做,我得到这个错误:

“语法错误:JSON.parse:非意外 - JSON数据之后的空白字符“

如果我使用var mapcoords = $('#mapcoord')。

问题是,它会去掉html。那么如何将php数组传递给jquery并能够保留html代码呢?

+0

呃,你为什么要把它藏在HTML中? – 2012-08-06 13:47:54

+0

为什么不直接将json存储在隐藏元素中? – Kalpesh 2012-08-06 13:50:07

+0

@Evert我没有选择,对不起。除升级以外的任何建议都不是一个选项。 – John 2012-08-06 13:50:54

回答

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)

+0

好吧,看起来像我挂了的问题是我有一个外部js文件中的脚本。这就是我通过隐藏元素传递json值的原因。因为我不能在一个js文件中解析php。但我想我可以像你一样渲染它。 – John 2012-08-06 14:06:12

+0

如果脚本是外部脚本,您仍然可以将JavaScript变量写为全局变量,以便您可以随处访问它。如果你的外部文件是一个插件,或者你可以将这个变量作为参数传递给插件。如果你真的陷入困境,那么jQuery.parseJSON可能是我们最好的选择。 – 2012-08-06 14:16:51

0

假设将html页面和json数据从web服务器发送到同一个请求中的客户端,您应该在服务器端以php字符串的形式写入必要的js。下面的片段应该说明需要做什么:

$map_json = "var jsonData = " . $json->encode($map_array); 
$map_json = '<script type="text/javascript">' . $map_json . '</script>'; 
echo $map_json; 

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

0

我会尝试这样的事:

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

由于JSON是有效的JavaScript,你应该使用JSON内容的变量。你甚至不需要隐藏的HTML元素。

相关问题