1

所以我想将我所有的 MySQL 结果存储在一个可以用 javascript/jQuery 操作的数组中。

这是我当前的代码:

<?php
    $sql = "SELECT * FROM potentials";
    $result = mysql_query($sql) or die(mysql_error());
    $potential = mysql_fetch_array($result);
    echo json_encode($potential);
?>

还有我的 Javascript:

<script type="text/javascript">
    $(document).ready(function(){
        var myArray = "<?php print(json_encode($potential)); ?>";
        console.log(myArray)
    )};
</script>

我不断收到“意外的号码”或“意外的标识符”。这是怎么回事?

4

3 回答 3

2

json_encode()使用 JSON 表示法返回一个对象。奇怪的是,你用引号包围了它。尝试删除它们:

<script type="text/javascript">
$(document).ready(function(){
    var myArray = <?php print(json_encode($potential)); ?>;
    console.log(myArray);
});
</script>

(它不是一个数组,它是一个对象,所以你可能想重命名你的变量;))

于 2013-04-14T15:32:10.757 回答
0

你使用json_encode()了两次,但是如果你想使用它,你需要解析它。在 jQuery 中,这可以通过jQuery.parseJSON这样的方式完成

var myArray = jQuery.parseJSON('<?php print json_encode($potential); ?>');

此外,如果您想要所有结果,则需要循环查询(例如 with while),然后将其保存到数组中

$array = array();
while ($row = mysql_fetch_array( mysql_query( $query ) )
{
    $array[] = $row;
}
于 2013-04-14T15:29:23.427 回答
0
<script>
    var data = '<?php echo $data; ?>';
    var json = JSON.parse(data);
    console.log(json[0]); //etc
</script>

请注意, var data = ... 是单引号,因此您将 php 的回声作为字符串捕获

于 2013-04-14T15:31:25.200 回答