【问题标题】:json_encode combined with $_GET (PHP & Javascript)json_encode 结合 $_GET (PHP & Javascript)
【发布时间】:2011-10-02 02:49:27
【问题描述】:

我需要将 JSON 数组传递给网页 URL,所以我这样做了

$url = 'page.php?id=' . json_encode($array);

变成了

$url = 'pages.php?id=["1", "2", "3"]';

然后,在 page.php 内部,这基本上是我做的 Javascript 代码

var foo = <?php $_GET['id']; ?>

但是foo 不是像["1", "2", "3"] 这样的数组,它只是[

这是为什么?

另外,最好是:url.php?id=value 还是 url.php?id="value"??

【问题讨论】:

    标签: php javascript json getmethod


    【解决方案1】:

    你忘了urlencode()它。

    $url = 'page.php?id=' . urlencode(json_encode($array));
    

    当它回来时不要忘记json_decode()它。

    【讨论】:

    • 感谢您的回答。但是 urlencode 这样做 [\"1\", \"2\", \"3\"] 无法被 Javascript 读取
    • 使用他建议的代码,然后,在page.php 中你会想要var foo = <?php echo json_decode(urldecode($_GET['id'])); ?>
    • @GEorge:不,这是你在 php.ini 中的设置。
    • @Ignacio,我使用 str_replace 将\" 变为",现在它可以工作了.. 但是我的第二个问题怎么样:Also, is it better to do: url.php?id=value or url.php?id="value"??
    • @GEorge:没有“更好”。您是否希望这些引号成为值的一部分。如果这是你的问题,你不需要它们。 id 的值是从= 到下一个& 或URL 结尾的字符。 " 没有特殊含义,只是 URL 的一部分。
    【解决方案2】:

    出于好奇,您是否必须将其作为 json_encoded 字符串传递?

    也许你可以将它作为一个数组传递

    page.php?id[]=1&id[]=2&id[]=3 
    

    那么您的 page.php 代码将如下所示:

    echo json_encode($_GET['id']);
    

    如果您传入页面 ID,我还会使用白名单方法检查不良数据。

    $safe = array('1','2','3');
    $id = $_GET['id'];
    foreach($id as $value){
     if(!in_array($value, $safe)){
        echo "Sry, data not valid";
        exit;
     }
    }
    echo json_encode($id);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 2012-09-15
      • 1970-01-01
      相关资源
      最近更新 更多