0

我正在json_encode对表格的结果做一个方法。

当我var_dump对这个变量做 a 时。我得到三个对象。

{"id": "5"}
{"id": "6"}
{"id": "7"}

所以这是我的过程。我有一个带有 onclick 方法的图像。

<input type='image' onclick='download(".$z.")'>

这是我的开发人员工具中按钮的外观。

<input type="image" src="image.jpg" onclick=download({"id":"13","itemName":"","itemDesc":"","imageURL":"","language":"English (US)","category":"Presentation","size":"1970 KB","flagDesc":"","fileType":"PPTX"})">

这是我正在使用的方法。我的方法没有拾取我所有的对象。它只拾取最后一个对象。为什么?

        function download(z)
    {
        $.ajax({
            type: 'POST',
            url:'download.php',
            data: { image: JSON.stringify(z) },
            success:function(results){
                $('div').html(results);
            }
        });
    }

在我的 download.php 文件中,我正在转储json_decode($_POST['image']);

我多次得到同一个对象,但只有一个对象。我怎样才能得到它们?

4

2 回答 2

1

那不是有效的json。json 字符串必须评估为单个实体。一个数组,一个对象,一个字符串,一个int。那里有 3 个单独的对象。为了使其远程有效,它看起来更像:

[ {"id" : 5}, {"id": 6}, {"id" : 7} ]

例如对象数组。

于 2012-11-16T15:14:07.163 回答
0

这个独立的例子对我很有效。

<?php if ( empty($_POST) ) {
$z = json_encode(array(
    array('id'=>5),
    array('id'=>6),
    array('id'=>7)
));
?>
<html>
    <head>
        <title>...</title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <script type="text/javascript">

            function download(z)
            {
                $.ajax({
                    type: 'POST',
                    url:'?',
                    data: { image: JSON.stringify(z) },
                    success:function(results){
                        $('div').html(results);
                    }
                });
            }
    </script>
    </head>
    <body>
        <input type='image' onclick='download(<?php echo $z; ?>)' />
        <div></div>
    </body>
</html>
<?php
}
else if (!isset($_POST['image'])) {
    die('missing parameter');
}
else {
    $imgs = json_decode($_POST['image'], true);
    echo '<pre>', htmlspecialchars(var_export($imgs, true), ENT_COMPAT, 'utf-8'), '</pre>';
}

单击“图像”按钮后

array (
  0 => 
  array (
    'id' => 5,
  ),
  1 => 
  array (
    'id' => 6,
  ),
  2 => 
  array (
    'id' => 7,
  ),
)

显示在输出 div

于 2012-11-16T15:17:37.653 回答