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

Getting an array from PHP in JavaScript/jQuery using JSON, and manipulating it afterwards?

所以我遇到了一个相当棘手的问题。我快到了——太近了! - 解决它但还不够。我看过很多例子,但没有一个完全符合我的要求。

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

这里是myreqpdo.php:

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

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

我发现 this example 使用 jQuery,但这是一个例子,其中人们只想将列表直接插入到代码中而无需任何进一步操作:

<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>

我一直以为答案就在我眼皮底下,但我真的没有看到我想要的例子!有什么想法吗?

您不需要 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 在调用函数之前做任何事情。