使用 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
在调用函数之前做任何事情。
所以我遇到了一个相当棘手的问题。我快到了——太近了! - 解决它但还不够。我看过很多例子,但没有一个完全符合我的要求。
在 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
在调用函数之前做任何事情。