编辑/澄清:我有一个PHP页面,称之为displayPhotos.php,其中我设置了一个Ajax调用到不同的PHP页面,调用它getPhotos .php,它查询数据库并将照片信息(标题,文件名等)返回到displayPhotos.php显示的位置。我在displayPhotos中使用php来操作从getPhotos返回的数据。从Ajax调用返回的数据是一个javascript 2维数组。我需要将javascript数组转换为一个php数组,以便我们可以显示其他内容。我怎么做? 希望这有助于。JavaScript范围的阵列和转换js阵列为一个php阵列
我的眼睛因阅读所有文档而受到伤害。
我想用ajax查询数据库,返回数据然后用php继续网页。
我看过的所有例子都是从在php中创建json开始的。我需要从JavaScript中的json对象开始。
<script>
var photoarray = [];
var ajaxRequest = $.ajax
({
url : "fhs_get_photos.php",
type: "POST",
dataType: "json",
success: function(photo_array)
{
photoarray = photo_array;
//line below works. the file name is correct but disappears
//outside of this function
console.log("photoarray[0][file_name] is: " + photoarray[0]['file_name']);
},
error: function(request, status, error)
{
alert('An error occurred: ');
}
});
在这个例子中,我没有把任何东西传递给查询数据库的php文件。控制台日志显示照片阵列中的文件名是正确的,但一旦在此功能之外,即使它被声明为全局文件,它也会消失,我认为它是无论如何。为什么和我需要做些什么来解决这个问题。
php文件只是做一个SELECT * FROM .....并返回所有内容。
// in fhs_get_photos.php
// SELECT * FROM table......
echo $json = json_encode($result);
return $json;
所以我现在有数组返回,但它是在JavaScript中。一旦我找出范围问题,我该如何将这个javascript数组转换为一个php数组?
<h3>Welcome to the Historical Society's historical photo archive
</h3>
</header>
<figure id="photo_figure">
<script>
//line below gets me: SCRIPT5007: Unable to get property 'thumb' of
//undefined or null reference
console.log("photoarray thumb: ") + photoarray[0]['thumb'];
</script>
我解释正确吗?
如果您选择阿贾克斯,没有传球再次PHP,PHP的渲染已经发生了,除非你刷新,不需额外再发生。你需要用新的数据在你的成功函数中手动编辑/创建你需要的dom – juvian
我不明白,为什么你需要将js数组转换为php数组以及它应该发生在哪里?你的回应是JSON,你必须解析它“photoarray = JSON.parse(photo_array)”。之后,它是你的使用,如果它保存到全局范围 - 那么它应该是其他脚本可见(IF的响应收到后,他们被执行) –
@juvian见我澄清。我如何使用PHP中的数据包含在JavaScript数组中创建dom? – eric