【问题标题】:How to pass php array to jquery and turn into json?如何将php数组传递给jquery并变成json?
【发布时间】:2012-08-03 12:00:20
【问题描述】:

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

【问题讨论】:

标签: php jquery arrays json


【解决方案1】:

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

例如:

<?php

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

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

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

如果做不到,可以尝试使用jQuery.parseJSON将字符串转换成json对象。

希望对你有帮助!

你试过jQuery.parseJSON(myString)吗?

【讨论】:

  • 好的,看起来我被挂断的问题是我将脚本放在外部 js 文件中。这就是我通过隐藏元素传递 json 值的原因。因为我无法在 js 文件中解析 php。但我想我可以像你拥有的那样渲染它。
  • 如果脚本是外部的,您仍然可以将 javascript 变量写为全局变量,这样您就可以在任何地方访问它。如果您的外部文件是插件或其他东西,您可以将变量作为参数传递给插件。如果你真的被卡住了,那么 jQuery.parseJSON 可能是我们最好的选择。
【解决方案2】:

假设 html 页面和 json 数据在同一个请求中从 web 服务器发送到客户端,您应该在服务器端编写必要的 js 作为 php 字符串。下面的 sn-p 应该说明需要做什么:

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

你的 js sn-p 应该可以在客户端访问变量 jsonData。

【讨论】:

    【解决方案3】:

    我会尝试这样的事情:

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

    由于 JSON 是有效的 javascript,您应该获得一个包含 json 内容的变量。您甚至不需要隐藏的 HTML 元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      相关资源
      最近更新 更多