使用JSON从JavaScript / jQuery中获取PHP数组,然后进行操作?

时间:2015-01-03 14:02:14

标签: javascript php jquery json

所以我正处于一个相当棘手的问题中。我快要走了 - 太近了! - 解决它但不完全在那里。我已经看过很多例子,但没有一个像我想要的那样。

在php页面myreqpdo.php上,我从MySQL表中恢复了一些数据行并将它们存储在一个二维数组中。在我的页面index.php上,我需要通过JavaScript访问这个数组,并在将它发送到我需要填充的内容之前稍微玩一下。

这是myreqpdo.php:

$locWanted = $_POST['searchTerm'];
echo json_encode(getVillesCPs($locWanted));

function getVillesCPs ($searchTerm) {
    // code to access DB here
    return $resultats;
}

我使用jQuery找到了this example,但这是一个实例,其中一个人只想将列表直接插入代码而不需要进一步操作:

<html>
<head>
        <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'></script>
</head>
<body>

        <!-- this UL will be populated with the data from the php array -->
        <ul></ul>

        <script type='text/javascript'>
        $(document).ready(function(){
                /* call the php that has the php array which is json_encoded */
                $.getJSON('json_encoded_array.php', function(data) {
                        /* data will hold the php array as a javascript object */
                        $.each(data, function(key, val) {
                                $('ul').append('<li id="' + key + '">' + val.first_name + ' ' + val.last_name + ' ' + val.email + ' ' + val.age + '</li>');
                        });
                });

        });
        </script>

</body>
</html>

这对我不起作用,因为此功能是基于搜索参数触发的功能。我需要类似下面的伪代码:

<script>
    var myArray = {code to recover PHP array};
    // manipulations for myArray here, using data to fill values of items on page
</script>

我一直认为答案就在我的鼻子底下,但我真的没有看到像我想要的那样的例子!有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您不需要jQuery在您的javascript代码中插入PHP中的数组,只需将其直接插入需要的地方:

<script>
    var myArray = <?php echo json_encode(getVillesCPs($locWanted)); ?>;
    // manipulations for myArray here, using data to fill values of items on page
</script>

请注意,在此代码之前,您必须在PHP代码中为$locWanted var设置一个值,其他的getVillesCPs将使用空参数调用。

<小时/> 编辑:因为你的getVillesCPs是在另一个PHP文件中定义的,所以在调用它之前将它包含在你的主页面中(假设你的主页是一个PHP文件):

<?php 
//including the PHP file containing the function
include 'myreqpdo.php';
//setting a value for $locWanted, used then in the rest of the page
$locWanted = 'Paris';
?>
<script>
    var myArray = <?php echo json_encode(getVillesCPs($locWanted)); ?>;
    // manipulations for myArray here, using data to fill values of items on page
</script>

删除myreqpdo.php中的第2行代码,在调用函数之前,您不希望echo任何内容。