onClick方法只从json_encode中返回一个对象

时间:2012-11-16 15:03:58

标签: php jquery ajax json

我正在对表格的结果进行json_encode方法。

当我对此变量执行var_dump时。我有三个对象。

{"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']);

我多次获得相同的对象,但只有一个对象。我如何得到它们?

2 个答案:

答案 0 :(得分:1)

这不是有效的json。 json字符串必须求值为SINGLE实体。数组,对象,字符串,int。你那里有3个独立的物体。为了使其更加有效,它看起来更像是:

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

e.g。一组对象。

答案 1 :(得分: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,
  ),
)

显示在output-div